Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 清理REST API请求的HTaccess规则_Php_Api_.htaccess_Rest - Fatal编程技术网

Php 清理REST API请求的HTaccess规则

Php 清理REST API请求的HTaccess规则,php,api,.htaccess,rest,Php,Api,.htaccess,Rest,我有一个API服务器,我正在处理它,它目前通过$\u GET变量接受请求,如下所示 http://localhost/request.php?method=get&action=query_users&id=1138ab9bce298fe35553827792794394&time=1319225314&signature=d2325dedc41bd3bb7dc3f7c4fd6f081d95af1000 我需要帮助创建一个HTaccess规则,该规则可以读取用“

我有一个API服务器,我正在处理它,它目前通过$\u GET变量接受请求,如下所示

http://localhost/request.php?method=get&action=query_users&id=1138ab9bce298fe35553827792794394&time=1319225314&signature=d2325dedc41bd3bb7dc3f7c4fd6f081d95af1000
我需要帮助创建一个HTaccess规则,该规则可以读取用“/”替换“&”、用“/”替换“=”和“?”的url,以创建一个干净的url,如

http://localhost/request/method/get/action/query_users/id/1138ab9bce298fe35553827792794394/time/1319225314/signature/d2325dedc41bd3bb7dc3f7c4fd6f081d95af1000
在保持get参数完整的同时,还有什么方法可以让api工作

此外,这不是唯一的请求,将提出不同的请求


Stackoverflow总是寻求专家建议的地方,因此提前感谢这往往是我对此类问题的标准答案,但是当您可以在
request.php中执行时,您为什么要尝试使用
.htaccess
规则执行此操作,而这将是更易于维护的。只需在php脚本中解析
$\u SERVER['REQUEST\u URI']
的值

//not really tested, treat as pseudocode
//doesn't remove the base url
$params = array();
$parts = explode('/', $_SERVER['REQUEST_URI']);
//skip through the segments by 2
for($i = 0; $i < count($parts); $i = $i + 2){
  //first segment is the param name, second is the value 
  $params[$parts[$i]] = $parts[$i+1];
}

//and make it work with your exsisting code
$_GET = $params;
或者使用这个简单的
.htaccess

RewriteRule ^request/ request.php
并要求:

http://example.com/request/method/get/action/query_users/id/1138ab9bce298fe35553827792794394/time/1319225314/signature/d2325dedc41bd3bb7dc3f7c4fd6f081d95af1000

看起来像是重复的,参见第二个答案从您的示例URI判断,您似乎对RESTful API有一个基本的误解。搜索代表性状态转移将为您获取更多关于该主题的信息。我一直在搜索一个好的
.htaccess
解决方案,但从未想过将
请求URI分解为
。。。你说得对,更易于维护,谢谢!
http://example.com/request/method/get/action/query_users/id/1138ab9bce298fe35553827792794394/time/1319225314/signature/d2325dedc41bd3bb7dc3f7c4fd6f081d95af1000