假设我有一个资源BlogPost
。调用/blog/publish/<BlogPostId>
时,应发布博客文章。但如果它缺少标题,则不应该。
如果请求失败,我应该使用什么HTTP状态代码,因为资源未处于正确的状态以便对其执行请求的操作?
(我知道在我的路径中使用动词不是RESTful,但我不是要编写REST API。)
答案 0 :(得分:2)
尝试发布不完整的资源听起来像是客户端错误(即4xx系列),尤其是因为对端点的重复请求仍会导致相同的错误。 (即客户需要在重新尝试之前采取措施纠正错误)
关于API响应的状态代码没有硬性规定。只要你把它记录得很好并拿起那些逻辑上合理的那些,它应该是好的。
话虽如此,412 Precondition Failed
怎么样? Checking the RFC:
412(Precondition Failed)状态代码表示在服务器上测试时,请求头字段中给出的一个或多个条件评估为false。 此响应代码允许客户端在当前资源状态(其当前表示和元数据)上放置先决条件,从而防止在目标资源处于意外状态时应用请求方法。 < / p>
由于这是针对您自己的API,因此您不需要严格遵循将该状态代码链接到标头定义的前提条件的RFC。粗体部分与您的用例相关。