Php 清理REST API请求的HTaccess规则
我有一个API服务器,我正在处理它,它目前通过$\u GET变量接受请求,如下所示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规则,该规则可以读取用“
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