<分区>
我是第一次探索 REST API 的世界,我已经不得不通过使用 Slim 来处理它,但现在我想成为一个自制的解决方案,考虑到我不需要任何框架用于制作一个简单的 Rest Api。 我所做的是创建一个这样的页面:
<?php
$method = $_SERVER['REQUEST_METHOD'];
$request = explode("/", substr(@$_SERVER['PATH_INFO'], 1));
switch ($method)
{
case 'PUT':
echo "PUT";
break;
case 'POST':
echo "POST";
break;
case 'GET':
echo "GET";
break;
case 'DELETE':
echo "DELETE";
break;
default:
handle_error($request);
break;
}
我的目标是实现一个访问 token ,我想在 header 中传递它,但我不确定(我正在寻找安全模式)。但是,如果我从命令行运行它:
curl -X GET http://localhost/v1
我得到 GET
,只是为了举例说明它应该如何工作。所有其他查询也是如此。现在真正的问题是:只有当我传递了一个 token 时,我怎样才能调用 switch 中的方法?比如在页面顶部会进行控件会进行这样的检查:
if(!isset($_SERVER['AUTH_USER']))
{
exit('TOKEN not provide');
}
另一个问题是如何通过curl传递token?因为如果我通过... 我可以通过 curl 读取 header ,但它是如何工作的?
更新:
正如@Paradoxis 所提到的,我尝试过:
url http://localhost/v1 -H "Authorization: <token>"
但我似乎没能接受标题。我花时间了解为什么未传递 header ,因此在我的代码中添加了这一行:
print_r(apache_request_headers());
这是结果:
Array
(
[Host] => localhost
[User-Agent] => curl/7.46.0
[Accept] => */*
[Authorization] => <token>
)
如何在 request_headers
中看到我可以在 header 中正确看到,但我无法通过使用 $_SERVER['Authorization']
捕捉到它或 $_SERVER['HTTP_Authorization']