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

时间:2012-01-15 06:02:39

标签: php rest

所以这是一个2部分的问题,所以如果我在这里重复问题,我会提前道歉。

我正在使用PHP实现REST API,以便为我正在构建的Web应用程序进行工作。到目前为止,我已经实现了一个函数,它将查询用户数据库表并以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做同样的事情?< / p>

我的问题的第二部分:正如现在所做的那样,如果我在网页浏览器中输入第一个示例网址,则会在网页上显示JSON编码结果。我如何将这些数据导入其他网页?我可以使用JQuery.ajax()来发出请求并提取数据吗?如果是这样,我该怎么做呢?

与往常一样,如果我的任何问题措辞不当,我会非常乐意改写任何事情。提前感谢您的任何答案!

1 个答案:

答案 0 :(得分:1)

  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/之类的任何网址映射到http://api.my-wicked-awesome-webapp.com/index.php?method=ANY_NAME

  2. 您可以从您的域JQuery.ajax()致电api.my-wicked-awesome-webapp.com。但不是来自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.")";这样的东西会在加载时调用回调。