Lie*_*yan 5 rest web-applications django-urls
大多数REST教程安排资源如下:
GET /car/ -> list of cars
GET /car/<id>/ -> info about specific car
POST /car/ -> create a new car
Run Code Online (Sandbox Code Playgroud)
但是当构建用于浏览器的Web应用程序时,有一个很少讨论的缺失链接,在你发布到/ car /之前,你需要获取一个用于创建新资源(汽车)的表单.该表单的URL应该是什么?
我通常使用:
GET /car/new/ -> form for creating a new car
POST /car/new/ -> redirect to /car/<id>/ if item is created else show form with invalid fields highlighted
Run Code Online (Sandbox Code Playgroud)
但根据http://www.slideshare.net/Wombert/phpjp-urls-rest,这不是一个好的REST URL.我可以看出为什么它不是一个好的REST,因为"new"实际上被用作动词而不是资源,但是那时应该在哪里表单,因为GET /car/已经用于列出汽车,所以你不能GET /car/用于表单对于新车.
简而言之,我的问题是:"创建资源表单的RESTful URL是什么?"
在一个稍微相关的说明中,即使在Web服务中,有时并不总是明智地依赖客户提前知道模式,因此即使在Web服务中,也可能需要客户端请求资源的当前方式.架构.AFAICS,这与需要获取创建表单的类似情况(即表单有点像描述如何构造用于创建资源的POST查询的模式).我的思路是否正确?
REST 不太关心您的 URI 是什么样子,只要它标识一种唯一的资源并且是自描述的即可。满足这些标准,除此之外,这是个人喜好。如果使用动词有意义的话,没有什么可以禁止在 URI 中使用动词。
关于您稍微相关的注释,您暗示表单作为架构是media type。RESTful 架构涉及客户端和服务器,两者都了解用于表示应用程序状态的媒体类型。
REST API 应该花费几乎所有的描述性工作来定义用于表示资源和驱动应用程序状态的媒体类型,或者为现有标准媒体类型定义扩展关系名称和/或支持超文本的标记。任何描述对感兴趣的 URI 使用什么方法的努力都应该完全在媒体类型的处理规则范围内定义(并且在大多数情况下,已经由现有媒体类型定义)。
在这里阅读更多信息:http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven
这是来自 Roy Fielding 的,他是 REST 的定义者。一般来说,您的媒体类型应该是可扩展的——也就是说,除非必要,任何更改都应该添加并且不会破坏旧客户端。
| 归档时间: |
|
| 查看次数: |
1324 次 |
| 最近记录: |