我正在设计一个Restful HTTP API并且有一个设计问题。Restful HTTP API模式
在我的应用程序中,用户应该能够建议物品创建。
然后我可以批准或不批准他们。
我想知道最好的VERB + URL模式是什么。
实施例1:
POST|GET|PUT|DELETE /items
用户POST一个新的项目和我可以把它从“待定”或删除“认可”。
这里我必须使用GET/items?status = approved来获取所有批准的项目和GET/items?status = pending以获取所有未决项目。也许GET/items会默认给我所有批准的。
但我不明白我可以如何阻止用户将其设置为已批准状态。
或
例2:
POST|GET|PUT|DELETE /item_creation_suggestions
用户发布一个新的项目建议,我可以通过DELETE批准:婷,并做一个POST /项或删除它。
这里/ items和/ item_creation_suggestions是两个独立的集合。我只需在批准时删除建议并创建项目。
这使得我的应用程序免受未经授权的访问变得非常简单。我可以通过授权保护我的/物品,而/ item_creation_suggestions可以被任何人使用。
但这似乎不是很安静?
这同样适用于用户建议更新和删除项目时,并且我批准或拒绝这些项目。
我在Restful设计非常新,所以所有的反馈意见和建议,将不胜感激!
我不认为Accepted在这里适合;这意味着请求已收到,它在第一眼看来似乎有效,但这可能随请求在后台处理而改变。 – Evert
是的,这取决于目标受众是谁。从用户的角度来看,如果我'POST'一个项目,但它不是立即可见的,就会收到'202'。如果可能还有一个选项立即发布项目,并且区分这两者很重要,那么使用HTTP状态代码很容易。 – deceze
由于201表示它是创建的,所以202接受可能暗示该建议被接受。 – wingy