所以这是一个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()来发出请求并提取数据吗?如果是这样,我该怎么做呢?
与往常一样,如果我的任何问题措辞不当,我会非常乐意改写任何事情。提前感谢您的任何答案!
答案 0 :(得分: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
您可以从您的域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.")";
这样的东西会在加载时调用回调。