目前我有一个REST API,它表示具有两个不同子资源的资源:资源错误和有效条目。以前这个结构是不可变的:如果你有一个错误,它将保持错误,如果你有有效的条目,他们将保留为有效的条目。以下是一个示例JSON输出:
GET /resource/1
{
"resourceId" : 1,
"errors" : [
{ "id": 1, "errorDetails" : "it isn't right" }
],
"validData" : [
{ "id": 1, "message" : "it's good!" }
]
}
要求纠正错误以使其有效。所以本质上操作后的结果是
GET /resource/1
{
"resourceId" : 1,
"errors" : [],
"validData" : [
{ "id": 1, "message" : "it's good!" },
{ "id": 2, "message" : "Corrected, old data was : it isn't right" }
]
}
校正过程需要一些额外的参数,然后a)创建一个新的错误条目,因为提供的参数没有纠正错误或b)创建一个新的有效条目,因为错误已被纠正。
从REST角度来看,表示此问题的最佳方式是什么? 到目前为止,我有以下想法:
答案 0 :(得分:1)
我会使用选项1并自己制作错误资源,因为它们意味着什么,并且也有一些行为(检查它们是否可以删除)。它应该是POST
,因为它是服务器端的必要处理(如果我当前理解的话),以确定实际将要做什么。
某些“重要”的东西应该是一种资源,因此选项2似乎不是最佳的。
次要注意:已经拥有id 可能的所有内容都应该是资源,对于“数据”也是如此。此外,除非有一个非常好的理由明确泄漏这些东西的ID,我宁愿将URI归还给这些东西而不是ID。