【问题标题】:RESTful Resource Naming for POSTPOST 的 RESTful 资源命名
【发布时间】:2017-03-21 17:02:22
【问题描述】:

给出这个命名约定:

http://www.restapitutorial.com/lessons/restfulresourcenaming.html

对于 POST(插入),资源的 url 应遵循此路径/逻辑:

 http://www.example.com/products/X123
 {
       "color":"something"
 }

以下路径在概念上是错误的吗?为什么正确/错误?

 http://www.example.com/products
 {
       "id":"X123"
       "color":"something"
 }

ID 是外部生成的

对于 PUT 也可以应用相同的逻辑吗? (id自然不能改,只能作为ref使用)

谢谢

【问题讨论】:

  • 您能否说得更具体一点:客户端决定创建资源的 ID 是否正确?

标签: rest asp.net-web-api soa restful-architecture


【解决方案1】:

对于 POST(通常用于在集合中创建新项目)使用以下内容:

http://www.example.com/products
{
   "color":"something"
}

如果您有客户生成 id 的要求,那就是

http://www.example.com/products
{
   "id": "abc123"
   "color":"something"
}

编辑:

对于 PUT,它应该是:

http://www.example.com/products/abc123
{
   "color":"something else"
}

【讨论】:

  • PUT 呢?您认为在 url 或请求正文中添加 id 是否正确?
【解决方案2】:

在我看来,您的方案最适合 PUT 方法,如果我只知道它,我总是更喜欢在 url 中包含 id - 这对其他人来说是最清晰的解决方案。

关于在正文中包含 id 的第二部分,有一个很好的答案:https://stackoverflow.com/a/28108844/3301697 我在这个答案中唯一要改变的是在每个 PUT 请求中包含 id,如果你知道,为什么要隐藏它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-29
    • 2019-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多