如何从http请求获取URI参数

时间:2014-12-12 14:45:47

标签: php web-services rest http

我是宁静架构的新手,我想从头开始为我的应用程序创建一个简单的api .....没有任何框架。目前我正在尝试了解如何在我的URI中获取“users”参数,以便我可以将操作路由到处理用户登录和注册的控制器。到目前为止,我已经能够使用“$ _SERVER ['REQUEST_URI']”和使用“$ _SERVER ['REQUEST_METHOD']”的post方法查看我的URI,但我无法获取请求的“users”参数当我添加“使用者”时,它返回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');
}

2 个答案:

答案 0 :(得分:0)

当您转到/users网址时,服务器会尝试访问该特定网页,并且没有任何内容。您需要使用查询字符串传入您想要的任何路径 请/calendar_app_api?route=users/calendar_app_api?user_id=1
然后通过$_GET数组获取信息。

或者您可以做的是配置服务器以将所有请求路由到一个索引文件,然后强制将任何内容作为查询传递。 check this resource out

答案 1 :(得分:0)

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

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

$resource = $pathinfo['filename'];