我正在尝试查找有关最佳和最常见的RESTful url操作的信息。
例如,您使用什么URL来显示项目的详细信息,用于编辑项目,进行更新等。
/question/show/<whatever>
/question/edit/<whatever>
/question/update/<whatever> (this is the post back url)
/question/list (lists the questions)
嗯。感谢任何人的帮助:)
我正在尝试查找有关最佳和最常见的RESTful url操作的信息。
例如,您使用什么URL来显示项目的详细信息,用于编辑项目,进行更新等。
/question/show/<whatever>
/question/edit/<whatever>
/question/update/<whatever> (this is the post back url)
/question/list (lists the questions)
嗯。感谢任何人的帮助:)
Answers:
使用URL来指定您的对象,而不是您的操作:
请注意,您首先提到的不是RESTful:
/questions/show/<whatever>
相反,您应该使用URL来指定对象:
/questions/<question>
然后,您对该资源执行以下操作之一。
得到:
用于获取资源,查询资源列表以及查询资源的只读信息。
要获取问题资源:
GET /questions/<question> HTTP/1.1
Host: whateverblahblah.com
列出所有问题资源:
GET /questions HTTP/1.1
Host: whateverblahblah.com
开机自检:
用于创建资源。
请注意以下是错误:
POST /questions/<new_question> HTTP/1.1
Host: whateverblahblah.com
如果尚未创建URL,则在指定名称时不应使用POST来创建URL。这将导致资源未找到错误,因为尚不存在。您应该先将资源放在服务器上。您可能会争辩说,通过创建一个新问题,您还正在更新/ questions资源,因为它现在将在其问题列表中返回另一个问题。
您应该执行以下操作以使用POST创建资源:
POST /questions HTTP/1.1
Host: whateverblahblah.com
请注意,在这种情况下,未指定资源名称,新的对象URL路径将返回给您。
删除:
用于删除资源。
DELETE /questions/<question> HTTP/1.1
Host: whateverblahblah.com
放:
指定资源URL时,用于创建资源或覆盖资源。
对于新资源:
PUT /questions/<new_question> HTTP/1.1
Host: whateverblahblah.com
覆盖现有资源:
PUT /questions/<existing_question> HTTP/1.1
Host: whateverblahblah.com
...是的,它们是相同的。PUT通常被称为“编辑”方法,因为通过用稍有改动的版本替换整个资源,您已经编辑了客户端下次执行时将获取的内容。
在HTML表单中使用REST:
方法内容属性是具有以下关键字和状态的枚举属性:
- 关键字GET,映射到状态GET,指示HTTP GET方法。
- 关键字POST,映射到状态POST,指示HTTP POST方法。
从技术上讲,HTTP规范并不仅限于这些方法。从技术上讲,您可以自由添加所需的任何方法,但实际上,这不是一个好主意。这个想法是每个人都知道您使用GET来读取数据,因此如果您决定改用READ的话,这将使您感到困惑。那说...
补丁:
这是在正式RFC中定义的方法。它旨在用于您只希望对资源发送部分修改的情况,就像PUT一样使用:
PATCH /questions/<new_question> HTTP/1.1
Host: whateverblahblah.com
所不同的是PUT必须发送整个资源,不管它有多大相比,有什么实际改变,而PATCH你可以给刚刚更改。
假设/questions/10
是一个有效的问题,则使用该方法与之交互。
开机自检添加到它
放置以创建或替换它
获取以查看/查询它
并删除到..删除它。
网址不变。
我要出去肢体和猜你你的意思是什么是MVC标准控制器,当你说“REST风格”的网址,因为你的例子可以被视为非“REST风格”(见本文章)。
由于Rails确实普及了您似乎感兴趣的URL样式,因此在下面提供了Ruby on Rails中ScaffoldingGenerator产生的默认控制器操作。使用Rails应用程序的任何人都应该熟悉这些。
脚手架的动作和视图是:索引,列表,显示,新建,创建,编辑,更新,销毁
通常,您可以将其构造为:
http://application.com/controller/<action>/<id>
这是使用REST原理的当前URL的映射:
/question/show/<whatever>
如果您将问题标识为资源,那么它应该具有唯一的URL。通常使用GET来显示(检索)它。它成为了:
GET /question/<whatever>
/question/edit/<whatever>
现在,您希望用户对同一资源有另一个视图,该视图允许他编辑该资源(也许使用表单控件)。
这里有两个选择,您的应用程序是一个应用程序(不是网站),那么使用JavaScript将资源转换为客户端上的可编辑资源可能会更好。
如果这是一个网站,则可以使用带有其他信息的相同URL来指定另一个视图,通常的做法是:
GET /question/<whatever>;edit
/question/update/<whatever> (this is the post back url)
这是为了改变问题,因此PUT是使用的正确方法:
PUT /question/<whatever>
/question/list (lists the questions)
问题列表实际上是问题的父资源,因此自然是:
GET /question
现在您可能需要更多:
POST /question (create a new question and returns its URL)
DELETE /question/<whatever> (deletes a question if this is relevant)
多田:)