逻辑和物理 URL

2024-07-04

这个问题是我之前问题的延伸:“此网络服务是否安静” https://webmasters.stackexchange.com/questions/49832/what-qualifies-as-a-rest-web-service尝试更好地理解 Rest Web 服务的概念。 我几乎阅读了有关 Rest 的所有内容,但我无法理解某个 Web 服务是否是 Rest,或者为什么不是。在我看来,一切都是或不是休息取决于观点......

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

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

这个月我开始开发一个移动混合应用程序,我开始用本地代码+ jquery mobile 开发前端,用 php + mysql 开发后端。我这里有或多或少相同的场景,用户是否需要订阅某个事件。当他按下按钮订阅特定事件时,我使用 ajax 调用和正文中的 json 文件向特定的 php 脚本发出 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 的原因吗?

EDIT


我读了很多的另一件事是 Rest 使用描述资源而不是操作的 url!虽然我再次无法理解。对于我的网络服务中的所有内容,我使用发布请求。例如,我想要让用户订阅一个事件,我在 url 发出一个发布请求my.server.com/subscribe.php在此请求的正文中,我有一个 json 文件,其中包含id用户和event name .

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

这种情况是休息吗?如果不是,还缺少什么吗?


我将尝试按照我的理解解释 REST。

RESTful Web 服务基于两个因素:

  1. URLS - URL 应基于资源。例如:/app/students、/app/students/{id}
  2. 方法 - 方法定义要对 url 执行的操作。喜欢

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

有多种方法可以使用 PHP 实现 Restful url,请参阅答案here https://stackoverflow.com/questions/8291712/using-clean-urls-in-restful-api

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

逻辑和物理 URL 的相关文章

随机推荐

  • Matplotlib 图例帮助

    我正在写一个脚本 其中包含几个要点 我也试图从这些点上创造一个传奇 总结我的脚本 我正在绘制几种 类型 的点 称为 a b c 这些点具有不同的颜色和形状 a go b rh c k 这是我的脚本相关部分的缩短版本 lbl the type
  • 如何查询我的 Subversion 存储库?

    目前 我只想找到过去 X 天内未修改的所有文件 但最终我希望能够对我的 subversion 存储库进行更复杂的查询 是否有我可以使用的某种 Subversion 查询语言或 API 您可以使用 SvnQuery 项目 http svnqu
  • Kotlin:在构造函数中初始化类属性

    我创建了一个带有类属性的 Kotlin 类 我想在构造函数中对其进行初始化 public class TestClass private var context Context null Nullable attribute public
  • 如何使用大量脚本文件管理 AngularJS 工作流程

    我研究了 gruntjs 但我不确定它是否是解决我的工作流程问题的正确工具 我正在开发一个巨大的 Angular 项目 其中已经有 30 多个 js 文件 每次添加新的 js 文件时 我都必须转到索引文件并在其中添加引用 有没有办法用 gr
  • 如何通过鼠标点击使一个对象移动并与另一个对象交换位置

    到目前为止 我有一个脚本 可以在单击鼠标时将对象移动一小段距离 但是我想更改它 以便当我单击该对象时 它会与旁边的另一个对象交换位置 而不仅仅是它所在的小距离现在搬家了 我对如何做到这一点有点困惑 因为我对统一很陌生 using Unity
  • 使用 ETag 进行 Volley 缓存

    我正在使用 Volley 库 但无法正确设置缓存 服务器向我发送 json 对象 过期时间和 ETag 我想将此对象保存在缓存中 并在下一个对该对象的请求中使用向服务器发送的请求 在标头中包含 ETag 如果响应为 304 Not Modi
  • 使用 Sublime Text 和正则表达式匹配行上的第一个空格

    所以正则表达式对我来说一直很困难 我试图找到一个正则表达式来选择一行上的第一个空格 这让我感到沮丧 那么我可以使用 sublime text 将其替换为 如果你能给出一个快速的解释 这将有助于 本着 edi 回答的精神 但对正在发生的事情进
  • 在挑选多个补丁时如何跳过一个补丁?

    我已经开始使用如下命令进行挑选 git cherry pick A B C D 假设补丁 A 和 B 有一些合并冲突 但我最终将它们全部修复并且git cherry pick continue 当我最终到达 C 时 我意识到一定已经应用了相
  • scala.tools.nsc.Interpreter -- 如何执行解释器语句以便在全局范围内定义结果? (Scala 2.7.7final)

    我正在尝试在 Scala 中解释字符串来定义类和方法 我使用了来自的例子http scala programming language 1934581 n4 nabble com Compiling a Scala Snippet at r
  • 每个 Service Fabric 实例的配置

    我正在设计一个服务结构无状态服务 它需要每个实例的配置数据 我最初的想法是创建命名分区 并使用PartitionInfo获取命名键 使用共享只读字典来加载每个实例的设置 问题是 现在在内部 从其他服务 访问此实例需要分区键 由于使用此方法的
  • 使用 junit 进行 Drools 测试

    使用 junit 测试 drools 规则的最佳实践是什么 到目前为止 我们使用 junit 和 dbunit 来测试规则 我们有放入 hsqldb 的示例数据 我们有几个规则包 到项目结束时 很难做出良好的测试输入来测试某些规则而不触发其
  • 我可以从图像文件的名称中获取图像文件的 Uri 吗?

    有一些图像文件 我想获取这些图像文件的Uri 在我的代码中 我只知道图像文件的路径和文件名 如何从路径和文件名中获取 Uri 如果你有一个File 您始终可以将其转换为URI File file new File path File pat
  • 如何获取所有行值制表符?

    我有使用制表器的可编辑表格 一切正常 但问题是单击 保存按钮 时无法获取所有行值 我正在尝试的是 document ready function var tabledata id 1 name Oli Bob age 12 col red
  • 将营业时间添加到 Java DateTime

    对于问题跟踪系统 我需要计算请求的响应时间 响应时间计时器只能在工作时间内运行 我应该使用什么算法 库来完成此任务 当然 我知道 Joda Time 或 ObjectLab Kit 但找不到任何对我的任务有帮助的东西 我错过了什么吗 Exa
  • 如何在 jest React Native 上调用或模拟 useForm?

    我有一个可重用的组件 称为 DatePicker 如下所示 export interface IPDatePicker extends IProps control any label string placeholder string v
  • git diff:--cached 和 --staged 之间有什么区别

    要将分阶段与上次提交进行比较 git diff cached git diff staged 两个命令生成相同的结果 对吧 的文档git diff says staged是 的同义词 cached 所以是的
  • 为什么 Pandas 中的 Pandas .loc 速度取决于 DataFrame 初始化?如何使 MultiIndex .loc 尽可能快?

    我正在尝试提高代码性能 我使用 Pandas 0 19 2 和 Python 3 5 我刚刚意识到 根据数据帧初始化的不同 一次写入一大堆值的 loc 速度有很大不同 有人可以解释为什么 并告诉我什么是最好的初始化吗 它可以让我加快我的代码
  • 如何使用 wistream 从内存中读取数据,就像从文件中读取数据一样?

    In my previous https stackoverflow com questions 4346240 how can i read from memory just like from a file using iostream
  • 在事件监听器函数中传递参数[重复]

    这个问题在这里已经有答案了 我想将参数传递给事件侦听器内部调用的函数 下面的代码显示了我想要做的事情 但它不允许我按照常规方式进行操作 有什么解决方法吗 HTML 代码
  • 逻辑和物理 URL

    这个问题是我之前问题的延伸 此网络服务是否安静 https webmasters stackexchange com questions 49832 what qualifies as a rest web service尝试更好地理解 R