如何从 http 请求获取 URI 参数


How to get to URI parameters from an http request

我是 restful 架构的新手,我想从头开始为我的应用程序创建一个简单的 api.....没有任何框架。目前,我正在尝试了解如何在我的 URI 中获取"users"参数,以便我可以将操作路由到处理用户登录和注册的控制器。到目前为止,我已经能够使用"$_SERVER['REQUEST_URI']"查看我的 URI 和带有"$_SERVER['REQUEST_METHOD']"的 post 方法,但我无法获得请求的"用户"参数)当我添加"user"时,它返回 404 错误。请有人启发我....这是如何工作的以及我做错了什么,提前感谢。

这是我的代码

$method =  $_SERVER['REQUEST_METHOD'];
$path = $_SERVER['REQUEST_URI'];
$resource = array_shift($path);
if($resource == 'users'){
   $name = array_shift($path);
   if(empty($name)){
       echo $method;
   }else{
       echo $method ."  ".$name;
   }
}else{
   header('HTTP/1.1 404 Not Found');
}

当您转到/users url 时,服务器会尝试访问该特定页面,但那里没有任何内容。您需要使用查询字符串传入所需的任何路由。
/calendar_app_api?route=users/calendar_app_api?user_id=1
也是如此然后通过$_GET数组获取信息。

或者,您可以做的是将服务器配置为将所有请求路由到一个索引文件,并强制将之后的任何内容作为查询传递。 查看此资源

$_SERVER['REQUEST_URI']

返回数组,所以我认为array_shift不会返回您的想法。您可以使用 pathinfo 获取所有路径组件的数组,包括文件名,文件名将是 URL 中最后一个斜杠后面的路径部分:

$pathinfo = pathinfo($_SERVER['REQUEST_URI']);
$resource = $pathinfo['filename'];