繁体   English   中英

HTaccess规则整理REST API请求

[英]HTaccess Rule To Tidy Up REST API requests

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

http://localhost/request.php?method=get&action=query_users&id=1138ab9bce298fe35553827792794394&time=1319225314&signature=d2325dedc41bd3bb7dc3f7c4fd6f081d95af1000

我需要帮助创建一个HTaccess规则,该规则可以读取将'&'替换为'/'以及'='和'?'的网址 用'/'创建一个干净的网址

http://localhost/request/method/get/action/query_users/id/1138ab9bce298fe35553827792794394/time/1319225314/signature/d2325dedc41bd3bb7dc3f7c4fd6f081d95af1000

有没有办法做到这一点,同时仍然保持获取参数完整的api工作?

此外,这不是唯一有要求提出不同请求的请求。

Stackoverflow始终是专家建议的地方,所以提前感谢

这往往是我对这类问题的标准答案,但是你为什么要尝试使用.htaccess规则来执行此操作,当你可以在request.php 执行此操作时,这样可以更加可维护 只需在php脚本中解析$_SERVER['REQUEST_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;

有了这个,你应该可以要求:

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

或者使用这个简单的.htaccess

RewriteRule ^request/ request.php

并要求:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM