1

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

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

如果它在http DELETEURI 上收到:/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而不会丢失服务器端的目标地址?

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

4

2 回答 2

0

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

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

因此,在您的情况下,您想将此网址http://www.domain.com/php/dbHandler.php与此网址的参数一起翻译: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 中它有点不同。

于 2013-07-14T19:23:53.413 回答
0

我会让我的请求看起来像这样:

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

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

于 2013-07-14T19:28:24.097 回答