什么是最佳/常见的RESTful网址动词和动作?

我试图找到最好和最常见的RESTful url操作的一些信息。

例如,您使用什么网址来显示项目的详细信息,用于编辑项目,更新等。

/question/show/<whatever>
/question/edit/<whatever>
/question/update/<whatever> (this is the post back url)
/question/list   (lists the questions)

哼。 感谢任何人帮助:)


使用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:

用于创建资源。

请注意,以下是一个错误:

POST /questions/<new_question> HTTP/1.1
Host: whateverblahblah.com

如果URL尚未创建,则在指定名称时不应使用POST创建它。 这应该会导致资源未找到错误,因为尚不存在。 您应该首先将服务器上的资源放入。 您可以争辩说,通过创建一个新问题,您还正在更新/ 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:

HTML5规范为表单元素定义了GET和POST。

方法内容属性是具有以下关键字和状态的枚举属性:

  • 关键字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是一个有效的问题,那么该方法用于与它进行交互。

    POST添加到它

    PUT来创建或替换它

    GET查看/查询它

    并删除以及..删除它。

    该网址不会更改。


    我打算冒昧地猜测,当你说“RESTful”url时,你的意思是什么是MVC的标准控制器,因为你的例子可能被认为不是“RESTful”(见本文)。

    由于Rails真正推广了您感兴趣的URL风格,因此我在Ruby on Rails中的ScaffoldingGenerator生成的默认控制器操作下方提供。 任何使用Rails应用程序的人都应该熟悉这些。

    脚手架的行为和观点是:索引,列表,显示,新建,创建,编辑,更新,销毁

    通常你会这样构造:

    http://application.com/controller/<action>/<id>
    
    链接地址: http://www.djcxy.com/p/1073.html

    上一篇: What are the best/common RESTful url verbs and actions?

    下一篇: Getting the class name of an instance in Python