PHP-解析REST请求URI并返回结果


PHP - Parsing REST Request URIs and Returning the Results

所以这是一个由两部分组成的问题,所以如果我在这里重复了问题,我提前道歉。

我正在用PHP为我为工作构建的web应用程序实现REST API。到目前为止,我已经实现了一个函数,它将查询用户数据库表并以JSON编码返回结果。

我发出请求的方式(使用GET方法,btw)是向URL:http://api.my-wicked-awesome-webapp.com/?method=getAllUsers发出请求。然后对结果进行JSON编码,并在网页上以纯文本形式进行回显。现在,这是有效的,这样做确实没有错,但在我看来,这种格式看起来有点笨重。

我的问题的第一部分:如何将请求(在本例中为GET请求)解析为http://api.my-wicked-awesome-webapp.com/users/之类的URL,该URL将执行与第一个示例URL相同的操作?

我的问题的第二部分:现在,如果我在web浏览器中键入第一个示例URL,就会在网页上显示一个JSON编码的结果。我该如何将这些数据提取到其他网页中?我可以使用JQuery.ajax()进行请求并提取数据吗?如果是这样的话,我该怎么做呢?

和往常一样,如果我的任何问题措辞不当,我会非常乐意重新措辞。提前感谢您的回答!

  1. 您需要在.htaccess文件、上进行mod_rewrite

    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^users/?$ index.php?method=getAllUsers [PT,L]
    

    更好地使用

    RewriteRule ^([^/]*)/?$ index.php?method=$1 [PT,L]
    

    这将把任何类似http://api.my-wicked-awesome-webapp.com/ANY_NAME/的url映射到http://api.my-wicked-awesome-webapp.com/index.php?method=ANY_NAME

  2. 您可以从域api.my-wicked-awesome-webapp.com调用JQuery.ajax()。但不是来自foreign.domain.com。如果您想从另一个域执行此操作,则需要使用JSONP。

    使用您称之为的JSON

    $.getJSON('http://api.my-wicked-awesome-webapp.com/users/', function(json){
    });
    

    使用JSONP,您可以将其称为

    $.getJSON(
        "http://api-my-wicked-awesome-webapp.com/?method=getAllUsers&callback=?",
        function(data) {
        }
    );
    

    index.php中,您需要使用$_GET['callback']包装输出;类似echo "$_GET['callback'](".$JSON_DATA.")";的东西,它将在加载时调用回调。