2012-01-15 55 views
1

所以这是一个2部分问题,所以如果我在这里复制问题,我提前道歉。PHP - 解析REST请求URI并返回结果

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

我发出请求(使用GET方法,顺便说一句)的方式是请求URL:http://api.my-wicked-awesome-webapp.com/?method=getAllUsers。然后结果是JSON编码并在网页上以纯文本的形式回显出来。现在,这是行得通的,这样做真的没什么问题,但是在我看来,这种格式看起来有点笨重。

我的问题的第一部分:我该如何解析请求(在这种情况下,GET请求)到一个URL,如http://api.my-wicked-awesome-webapp.com/users/,这将与第一个示例URL做同样的事情?

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

与往常一样,如果我的任何问题措辞不佳,我都会很乐意重写任何内容。预先感谢任何答案!

回答

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/任何URL映射到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.")";这会调用加载回调。

+0

好的,所以对于JSONP处理,我需要在API URL中指定一个回调参数吗?我在YouTube上看到,你需要另外一个参数,比如'http://api-my-wicked-awesome-webapp.com/?method = getAllUsers&callback =?'。这仍然是这种情况,还是我可以省略回调参数? – 2012-01-15 06:59:03

+0

现在查看我更新的答案。 – 2012-01-15 07:10:47

+0

啊哈!我明白这是如何工作的!非常感谢! – 2012-01-15 16:44:47