正确的状态代码以发送给HTTP POST请求,其中给定的ID与数据库中的对象不匹配

时间:2019-05-15 21:05:13

标签: http http-status-codes

假设我的API中有一个具有以下URL的终结点:

www.example.com/api/create-order-for-restaurant/

现在,在我的POST请求中,我发送以下数据:

{
    "restaurant_id": 43,
    "order": {...}
}

假设我的数据库中不存在ID为43的餐厅。应该发送回客户端的适当的HTTP状态代码应该是什么?

如果我应该发回404500,我感到困惑。

1 个答案:

答案 0 :(得分:2)

这是客户端错误,因为客户端指定了不存在的restaurant_id。

任何客户端错误的默认代码为400,在这里也很合适。 有一些更具体的客户端错误代码可能适用于这种情况,但是除非客户端可以对此信息进行某些操作不是很重要。

  • 422-被认为是正确的。 JSON是可解析的,它只包含无效信息。
  • 409-如果客户可以首先使用该特定ID创建餐厅,则可以认为是正确的。我假设服务器控制ID,所以出于这个原因,它可能不在这里。

所以400、422很好。 500不是。 500表示存在服务器端问题,但据我所知,您正在描述客户端使用不正确的restaurant_id的情况。