这个问题是我上一个问题的扩展:"Is this web service Restfull"试图更好地理解Rest Web Service的概念。 我几乎阅读了有关Rest的所有内容,但我无法理解某个Web服务是否休息,或者为什么不是。我看待它的方式,一切都是休息,取决于观点......
我在一篇非常有趣的文章中读到了一些可能最终让我明白什么是休息的东西。我读到Rest不使用物理网址而是使用逻辑网址。
我记得有一次我正在开发一个iOS应用程序,我们必须注册/订阅用户等,并且我被告知要向我们的服务器发出一个Post HTTP请求到一个如下所示的URL:www.myServer/devices/device/register
。在这个请求的正文中,我获得了服务器所需的json格式的所有信息。到那时,我的服务器是一个黑盒子,所以我甚至不关心这个链接的含义或它是如何生成的。但我知道这是一个网络休息服务。
本月我开始开发移动混合应用程序,我开始在前端开发本机代码+ jquery移动,后端开发php + mysql。我或多或少都有相同的场景,用户需要在事件中订阅。当他按下按钮订阅特定事件时,我会在主体中使用ajax调用和json文件发出http post请求到特定的php脚本,并且该脚本会相应地在数据库中写入/更新/删除。
电话看起来像这样:
$.ajax({
type: "POST",
url: "http://192.168.4.113/Server_CityInfo/subscribe.php",
data: data,
contentType: "application/json; charset=utf-8",
//dataType: "json",
success: function(response) {
$.mobile.changePage( "dialog.html", { role: "dialog" } );
},
error: function(xhr, status, message) { alert("Status: " + status + "\nMessage: " + message); }
});
如你所见,我确实使用了一个物理网址,指向我的php脚本来执行该操作。即使是用户所在的html页面,也是一个物理页面!是一个像myUrl.com/eventX的页面。
这是否意味着我正在构建的这个Web服务不是Rest服务?
他们去年是如何指向逻辑URL的,我只能指向物理php脚本?我知道他们的服务器是在java中,也许这就是为什么网址看起来不实际?
在一天结束时,我可以说我有100个不同的事件,用户可以订阅。当然我不会制作100个静态html页面。但我会制作1个动态生成的html页面。但是,该页面的链接仍然是mySite.com/event.html
之类的物理链接。我知道使网址看起来合乎逻辑的唯一方法是当你在文件夹中有一个index.html文件并指向该文件夹时,网址看起来像myWebsite.com/myFolder
。
所以这里的问题是,如何构建一个逻辑URL,这是什么使服务Restfull?
我读到的另一件事是Rest正在使用描述资源而不是操作的网址!虽然我不明白。对于我的Web服务中的所有内容,我使用Post Request。我想例如订阅一个用户参与一个事件,我在网址my.server.com/subscribe.php
发出一个帖子请求,在这个请求的正文中我有一个json文件,其中包含用户的id
和{ {1}}。
当我想注册一个用户时,我在网址event name
上发布了一个帖子请求,并在主体中使用该用户的my.server.com/register.php
发送了一个json。
这种情况是否休息,如果没有,会缺少什么?
答案 0 :(得分:1)
我会按照我的理解尝试解释REST。
RESTfull webservices基于两个因素:
方法 - 该方法定义要在URL上执行的操作。喜欢
GET
- 获取资源PUT
- 要插入记录POST
- 更新记录DELETE
- 删除记录。有很多方法可以使用PHP实现restful url,请参阅答案here