所以这是一个由两部分组成的问题,所以如果我在这里重复了问题,我提前道歉。
我正在用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()进行请求并提取数据吗?如果是这样的话,我该怎么做呢?
和往常一样,如果我的任何问题措辞不当,我会非常乐意重新措辞。提前感谢您的回答!
-
您需要在
.htaccess
文件、上进行mod_rewriteRewriteEngine 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
-
您可以从域
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.")";
的东西,它将在加载时调用回调。