API với xác thực trong PHP

Có thể làm sao để API không công khai, mà là riêng tư, chỉ có thể truy cập bằng mật khẩu. Trong trường hợp này, khi gọi đến API của chúng ta, trong mỗi yêu cầu ngoài các tham số sẽ cần phải truyền mật khẩu chính xác. Mật khẩu như vậy được gọi là token.

Người dùng API của chúng ta sẽ phải nhận token này bằng cách nào đó. Ví dụ, mua nó. Trong trường hợp này mỗi người mua sẽ có token riêng của họ.

Hãy xem cách làm việc với token qua ví dụ. Giả sử API của chúng ta nhận tham số là một số, và trả về bình phương của số đó. Hãy làm cho API này trở thành riêng tư. Bắt đầu triển khai.

Đầu tiên, để đơn giản, hãy tạo một token chung và lưu trữ nó dưới dạng mở trong file:

api.loc/index.php<?php
  $token = '12345';
?>

Đây là cách chúng ta sẽ gọi đến API của mình, truyền tham số và token:

urlhttp://api.loc/index.php?num=100&token=12345

Triển khai API với kiểm tra token:

api.loc/index.php<?php
  $token = '12345';
  
  if (isset($_GET['token']) and $_GET['token'] === $token) {
    if (isset($_GET['num'])) {
      echo $_GET['num'] ** 2;
    } else {
      echo 'error';
    }
  } else {
    echo 'incorrect token';
  }
  
?>
Задание 1

Hãy tạo một API, nhận tham số là ngày sinh và trả về số ngày còn lại cho đến ngày đó. Hãy thực hiện xác thực bằng token.

Задание 2

Sửa đổi bài toán trước đó sao cho cả tham số lẫn token đều được truyền bằng phương thức POST.

Задание 3

Sửa đổi bài toán trước đó sao cho token được truyền qua HTTP tiêu đề X-Token.

Задание 4

Hãy làm sao để các token được lưu trữ trong cơ sở dữ liệu và mỗi người dùng API có token riêng của họ.

Задание 5

Giới hạn cho mỗi người dùng API số lượng yêu cầu đến 10 mỗi ngày.