REST:帖子与帖子&新与创造

时间:2010-06-27 14:53:00

标签: url rest

为应用程序设计URL架构时,使用哪种规则?

  • example.com/post / example.com/posts / 了解帖子列表
  • 新邮件
  • example.com/post/new / example.com/post/create /
  • example.com/posts / + example.com/post/23 / example.com/post/ + example.com/post/23 / 有关帖子的列表和详细信息吗?
  • example.com/post/23 example.com/post/23 / 了解详情
  • example.com/post/edit/23 / example.com/post/23/edit / 进行修改。

我更喜欢: / post / 列表, / post / 23 / 了解详情, / post / 23 / edit / 对于编辑,只需b / c我可以在浏览器位置栏中手动使用该URL。我错了?请建议我。

感谢。

2 个答案:

答案 0 :(得分:3)

创建新资源时,您应该使用HTTP POST方法。因此,对于新客户,您可以POST到example.com/customer。然后,如果您需要有关该客户的信息,请访问example.com/customer//您最近创建的客户ID}。如果您需要所有客户,请执行GET到example.com/customer如果您想编辑客户,您可能希望PUT到example.com/customer//your customer id}

您正在处理的基本问题似乎是您在URL中指定了您的操作(或动词)。你不需要这样做。您应该使用example.com/23(或example.com/customers/23)中的HTTP PUT方法,而不是像example.com/edit/23那样。

有关创建RESTful资源的评论,请查看what is RESTful/REST

请查看PUT vs POST in REST以了解POST和PUT之间的区别(编辑和创建)。

为了构建更复杂的RESTful URL,我通常会从LinkedIn书呆子中引用this presentation

答案 1 :(得分:0)

我用:

  • GET /帖子列表
  • GET / posts / new to 获取'静态'的空HTML表单 仅限网站('ajax'网站和 '独立'客户不需要它)
  • POST / post for create('action'attr 在以前的形式)
  • GET / posts / 23 for 细节(不用于编辑!)
  • GET / posts / 23 /编辑以填充HTML 隐藏'_method = PUT'字段的表单 在浏览器中模拟PUT
  • PUT / posts / 23进行编辑('action'attr 在以前的形式)
  • DELETE / posts / 23 删除('内联'HTML表单用 '_method = DELETE'来模拟)
  • POST / posts / 23用于在浏览器中模拟PUT和DELETE

我从不使用/ posts /或/ posts / 23 /因为它很难(或很脏)改变响应格式。我可以使用/ posts(/ postts.html的同义词)用于浏览器,/ postts.xml用于XML服务,/ postts.json用于'ajax'数据,/ postts.smth_else用于smth else :)。此外,所有这些文件都可能是静态文件(缓存或存档),以便在高负载时释放CPU和内存。