认为我们有几个收集资源。
我可以在这个集合上创建一个实例资源:
POST /people
{
"_links" : {
"car" : {
"href" : "/cars/66H8800"
}
}
"name": "John"
}
但是,接受以下内容会非常合理吗?
POST /people
{
"_links" : {
"car" : {
"license" : "66H8800"
}
}
"name": "John"
}
...这会导致创建资源/people/1
(例如),/cars/66G8800
,如果/cars/66G8800
尚未存在?
似乎我开始混淆POST
(创建新资源)和PUT
(更新/创建特定资源)的目的。
答案 0 :(得分:1)
执行摘要:两者都没问题。我会跟#1一起警告你至少要做两次,可能是三次请求。一个是PUT车,另一个是POST车主/司机。如果您事先没有汽车的完整资源数据,请在PUT之前为此做一个GET,根据需要更新您的PUT请求体。如果GET返回404,那么只需将未知字段留在PUT中,并定义服务器将使用默认值填充它们(而不是拒绝PUT请求)。
答案很长:
REST并未规定您的邮件正文的格式应该是什么 REST引起的唯一限制是:
POST
方法。使用POST意味着您打算将请求主体定义的新资源附加到目标URI标识的集合。如果这样做,则要求服务器也必须在其他地方创建资源,那就这样吧。您的媒体类型决定了“许可”密钥是否应该存在。根据需要选择或创建一个。