簡體   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