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:
<?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:
http://api.loc/index.php?num=100&token=12345
Triển khai API với kiểm tra token:
<?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';
}
?>
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.
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.
Sửa đổi bài toán trước đó sao cho
token được truyền qua HTTP
tiêu đề X-Token.
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ọ.
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.