我正在研究PHP REST API。我想要一个用户密钥来访问API。我不知道如何执行此操作,我是否只发出一个密钥并让它们在每个API请求中以POST
或GET
发送?如果可以的话,请用最简单的术语帮助我解释,我知道很多人都想做这件事,这让很多人感到困惑,而不仅仅是我自己。
此外,我希望能够限制使用,我正在考虑将每个命中数存储在MySQL数据库中,甚至存储在内存中。我刚刚在Github API请求的标题中看到了这一点
X-RateLimi-Limit 5000
和X-RateLimi-Remaining 4996
并且每次点击时数字减少1,这是某种内置限制器吗?
答案 0 :(得分:1)
只需要客户注册您的网站, 在您的CLIENTS表中创建一条记录,向它们发出一个独特的,不易猜测的ID 然后每个api访问都要求将id包含在请求中,无论是在标题中的GET还是POST中。
对每个请求进行验证,如果id不存在或无效,则返回错误代码。
对于速率限制,您是正确的,您需要有一个单独的表来存储每个客户端的请求数,然后使用X-RateLimit计数器生成这些响应头。
真的不是那么难。
我为我的项目编写了一个API,欢迎您查看源代码,它位于Api文件夹中,这里 https://github.com/snytkine/LampCMS/tree/master/lib/Lampcms/Api/
和API调用的入口点就是这个 https://github.com/snytkine/LampCMS/blob/master/www/api/api.php