POST的RESTful资源命名

POST的RESTful资源命名,rest,asp.net-web-api,soa,restful-architecture,Rest,Asp.net Web Api,Soa,Restful Architecture,给定此命名约定: 对于POST(insert),资源的url应遵循以下路径/逻辑: http://www.example.com/products/X123 { "color":"something" } 以下路径在概念上是错误的吗?为什么它是正确的/错误的 http://www.example.com/products { "id":"X123" "color":"something" } ID是从外部生成的 同样对于PUT,是否可以

给定此命名约定:

对于POST(insert),资源的url应遵循以下路径/逻辑:

 http://www.example.com/products/X123
 {
       "color":"something"
 }
以下路径在概念上是错误的吗?为什么它是正确的/错误的

 http://www.example.com/products
 {
       "id":"X123"
       "color":"something"
 }
ID是从外部生成的

同样对于PUT,是否可以应用相同的逻辑?(id自然不能更改,只能用作参考)


谢谢

在我看来,您的场景最适合PUT方法,如果我知道的话,我总是更愿意在url中包含id,这对其他人来说是最清晰的解决方案

第二部分关于在身体中包含id,有一个很好的答案:
在这个答案中,我唯一要改变的是在每个PUT请求中都包含id,如果您知道,为什么要隐藏它。

我认为您的场景最适合PUT方法,如果我只知道id,我总是希望在url中包含id-这对其他人来说是最清楚的解决方案

第二部分关于在身体中包含id,有一个很好的答案: 在这个答案中,我唯一想改变的是在每个PUT请求中都包含id,如果您知道,为什么要隐藏它。

对于POST(通常用于在集合中创建新项),请使用以下命令:

http://www.example.com/products
{
   "color":"something"
}
如果您有客户机生成id的需求,则

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

换言之,应该是:

http://www.example.com/products/abc123
{
   "color":"something else"
}
对于POST(通常用于在集合中创建新项),请使用以下命令:

http://www.example.com/products
{
   "color":"something"
}
如果您有客户机生成id的需求,则

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

换言之,应该是:

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

你能更具体一点吗:客户端决定所创建资源的ID是正确的吗?你能更具体一点吗:客户端决定所创建资源的ID是正确的吗?PUT呢?您认为在url或请求正文中添加id是正确的吗?PUT呢?您认为在url或请求正文中添加id正确吗?