【问题标题】:REST API implementation issue php/JSREST API 实现问题 php/JS
【发布时间】:2013-07-12 15:15:57
【问题描述】:

我一直在阅读一些关于 PHP 和 JavaScript 中的 REST 的指南。 我面临一个小的实施问题。

假设我想删除我的服务器端以根据收到的 URI 运行。 例如:

如果它在http DELETE URI 上接收到:/users/563,它将删除 ID 为 546 的用户 我的问题始于客户端的 DELETE 请求(JavaScript):

function ajaxRequest()
{

    var http_request = new XMLHttpRequest();
    http_request.onreadystatechange = function()
    {
        var done = 4, ok = 200;
        if (http_request.readyState == done && http_request.status == ok)
        {
             responseHandler(http_request.responseText);
        }
    };


    http_request.open("DELETE", php/dbHandler.php , true);
    http_request.send(data);
}

在删除请求中我必须指定服务器端的 url 在这种情况下它是dbHandler.php 我应该在哪里插入 URI /users/563 而不会丢失服务器端目标地址?

在服务器端,如果我尝试使用命令 $_SERVER['REQUEST_URI'] 提取 URI,我将始终得到 php/dbHandler.php 在客户端创建/发送 URI 并在服务器端提取它的正确方法是什么?

【问题讨论】:

  • 我不确定发生了什么。当然,您应该向 users/563 发出请求,而不是 php/dbHandler.php
  • 听起来您应该将/users/563 作为 URI,并在您的服务器上设置某种 URL 重写以使其由 dbHandler.php 处理。另请参阅stackoverflow.com/questions/2539394/…

标签: php javascript rest


【解决方案1】:

我希望我的请求如下所示:

function ajaxRequest(id){
 // your stuff here...
 http_request.open("DELETE", "users/" + id, true);
 // your other stuff ...
}

但您需要确保在服务器端有一个资源映射到在 URI /users/{id} 处接收数据

【讨论】:

    【解决方案2】:

    当然,您需要使用一些知道如何根据您的需要在服务器端翻译您的请求的处理程序。

    如果您使用的是 apache - 它会通过 .htaccess file 处理所有请求

    因此,在您的情况下,您希望将此 url http://www.domain.com/php/dbHandler.php 与此 url 的参数一起翻译:http://www.domain.com/php/users/563 所以你的 htaccess 看起来像这样:

    Options +FollowSymLinks
    RewriteEngine On
    RewriteBase /
    
    RewriteRule ^php/users/([0-9]+)/?$ php/dbHandler.php?uid=$1 [L]
    

    这样,apache 知道如果他以 php/users/123 形式获取 url,他会将其重定向到 php/dbHandler.php 下的实际 url,参数 GET id 值为 123。

    这是基础知识 - 如果你不知道,你应该在这里阅读它是堆栈,你有大量的材料。

    当然,每个服务器都有自己的重定向 uri 方法,假设在 microsoft IIS 中它有点不同。

    【讨论】:

      猜你喜欢
      • 2018-02-17
      • 2021-09-19
      • 1970-01-01
      • 2019-09-03
      • 2021-08-09
      • 2017-02-09
      • 1970-01-01
      • 1970-01-01
      • 2014-02-17
      相关资源
      最近更新 更多