php - 逻辑和物理 URL

标签 php html web-services rest dynamic

这个问题是我之前问题的延伸:"Is this web service Restfull"试图更好地理解 Rest Web 服务的概念。 我几乎阅读了所有关于 Rest 的内容,但我无法理解某个 Web 服务是否是 Rest,或者为什么不是。在我看来,一切都是和不是休息取决于观点......

我在一篇非常有趣的文章中读到了一些东西,它可能最终让我明白了什么是休息。我读到 Rest 不使用物理 url,而是使用逻辑 url。

我记得有一次我在开发一个 iOS 应用程序,我们必须在其中注册/订阅用户等,我被告知向我们的服务器发出一个特定的 Post HTTP 请求到一个如下所示的 URL:www.myServer/设备/设备/注册。在此请求的正文中,我拥有服务器所需的所有 json 格式信息。那时我的服务器是一个黑盒子,所以我什至不关心这个链接是什么意思或者它是如何生成的。但我知道这是一个网络 Rest 服务。

这个月我开始开发一个移动混合应用程序,我开始使用 native 代码 + jquery mobile 开发前端,使用 php + mysql 开发后端。我在这里或多或少有相同的场景,用户需要订阅或不订阅事件。当他按下按钮订阅特定事件时,我向特定的 php 脚本发出带有 ajax 调用和正文中的 json 文件的 http post 请求,该脚本相应地在数据库中写入/更新/删除。

调用看起来像这样:

$.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); }
                    });

如您所见,我确实使用了物理 url 来指向我的 php 脚本以执行该操作。甚至用户所在的 html 页面,也是一个物理页面!是像 myUrl.com/eventX 这样的页面。

这是否意味着我正在构建的这个 Web 服务不是 Rest 服务?

他们去年如何将我指向逻辑 URL 而我只能指向物理 php 脚本?我知道他们的服务器是用 java 编写的,也许这就是为什么 url 看起来不像物理的原因?

归根结底,假设我有 100 个不同的事件可供用户订阅。当然我不会制作 100 个静态 html 页面。但我会制作 1 个动态生成的 html 页面。但是指向该页面的链接仍然是物理链接,如 mySite.com/event.html。我知道使 url 看起来合乎逻辑的唯一方法是当您在文件夹中有一个 index.html 文件并指向该文件夹时,该 url 看起来像 myWebsite.com/myFolder

所以这里的问题是,如何构建一个逻辑 url,这就是使服务 Restfull 的原因吗?

编辑


我经常阅读的另一件事是 Rest 正在使用描述资源而非操作的 url!。再次,虽然我不明白。对于我的 Web 服务中的所有内容,我都使用 Post Request。例如,我想为一个用户订阅一个事件,我在 url my.server.com/subscribe.php 发出一个发布请求,在这个请求的正文中,我有一个 json 文件用户的 id事件名称

当我想注册一个用户时,我在 url my.server.com/register.php 发出一个 post 请求,并在正文中使用 id 发出一个 json用户的。

这个场景是 Rest 吗?如果不是,还缺少什么?

最佳答案

我会尽量按照我的理解来解释 REST。

RESTfull 网络服务基于两个因素:

  1. URLS - URLs 应该基于资源。喜欢:/app/students,/app/students/{id}
  2. 方法 - 该方法定义了要在 url 上完成的操作。喜欢

    • GET - 获取资源
    • PUT - 插入记录
    • POST - 更新记录
    • DELETE - 删除记录。

有一些方法可以使用 PHP 实现 restful url 查看答案 here

关于php - 逻辑和物理 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17209809/

相关文章:

php - 如何从模板引擎 TWIG 中的完整路径加载模板

php - 如何使用 PHP、MySQL DB 和 JavaScript 模拟点对点通信 channel ?

css - 如何使位于另一个 div 下的 div 中的内容可访问/可点击?

php - echo class "active"- 如果 class =""已经存在或不存在。

javascript - 在 Angular 中设置默认选择文本

java - 使用 Apache CXF 的 REST WebService 中的 UTF-8 编码字符串

php - 将类、方法和参数传递给 WordPress 函数

php - 先前插入的值会在页面刷新时自动插入

mysql - 网络服务安全

asp.net-mvc - Azure Web应用程序和Web api服务(移动服务)架构全局分布