Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
restapi实现问题php/JS_Php_Javascript_Rest - Fatal编程技术网

restapi实现问题php/JS

restapi实现问题php/JS,php,javascript,rest,Php,Javascript,Rest,我一直在阅读一些关于PHP和JavaScript中REST的指南。 我面临一个小的实现问题 假设我想删除服务器端,以便根据接收到的URI进行操作。 例如: 如果它在http DELETE URI:/users/563上接收到,它将删除ID为546的用户 我的问题始于客户端JavaScript上的删除请求: function ajaxRequest() { var http_request = new XMLHttpRequest(); http_request.onreadys

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

假设我想删除服务器端,以便根据接收到的URI进行操作。 例如:

如果它在http DELETE URI:/users/563上接收到,它将删除ID为546的用户 我的问题始于客户端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);
}
在delete请求中,我必须指定服务器端的url,在这种情况下,它是dbHandler.php 在不丢失服务器端目标地址的情况下,我应该在哪里插入URI/users/563


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

当然,您需要与一些知道如何根据服务器端需要翻译请求的处理程序一起工作

如果您使用的是apache,它将通过

因此,在您的情况下,您希望将此url和参数转换为此url: 因此,您的htaccess将如下所示:

Options +FollowSymLinks
RewriteEngine On
RewriteBase /

RewriteRule ^php/users/([0-9]+)/?$ php/dbHandler.php?uid=$1 [L]
通过这种方式,apache知道,如果他以php/users/123的形式获取url,他将使用param GET id值123将其重定向到php/dbHandler.php下的实际url

这是最基本的——如果你不知道,你应该在这里阅读,因为你有很多材料


当然,每台服务器都有自己的重定向URI的方法,比如说在microsoft IIS中有点不同。

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

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

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

我不确定发生了什么。当然,您应该向users/563发出请求,而不是php/dbHandler.php?听起来您应该将/users/563作为URI,并在服务器上设置某种URL重写,让dbHandler.php处理它。另外,请参见