Rest API应该如何处理带有错误FK Id的主体的POST请求?

Rest API应该如何处理带有错误FK Id的主体的POST请求?,rest,validation,asp.net-core-webapi,webapi,Rest,Validation,Asp.net Core Webapi,Webapi,Web API从POST请求主体包含错误引用(FK Id)时应该返回什么 例如,此请求:POST/api/addresses/,正文为: { "street": "Foo Street", "city": "Bar" "userId": 333, } 我有两个非常简单的问题: 如果数据库中没有用户333,我应该返回什么状态代码400或404 我应该在Insert之前调用DB并验证用

Web API从
POST
请求主体包含错误引用(FK Id)时应该返回什么

例如,此请求:
POST/api/addresses/
,正文为:

{
  "street": "Foo Street",
  "city": "Bar"
  "userId": 333,
}
我有两个非常简单的问题:

  • 如果数据库中没有用户333,我应该返回什么状态代码<代码>400或
    404

  • 我应该在Insert之前调用DB并验证用户333是否存在,还是让DB失败并返回“FK异常”


  • 顺便说一句。只是澄清一下:如果在URL中使用id,我将返回404。但这是针对
    GET
    请求的,比如
    api/users/333
    。这里,我询问的是
    POST
    (或
    PUT
    )请求。

    我会传回
    400个错误请求
    ,因为请求没有正确的信息来完成请求。允许数据库失败,以系统要求的方式处理异常,并返回代码


    要处理是否存在有效的
    用户ID
    ,请确保呼叫者在呼叫前知道用户ID。在将
    POST
    请求提交给
    /api/addresses/
    之前,客户端可以向
    /api/users/
    发出
    GET
    请求,以获取有效的用户列表,或者在先前运行的过程中可能会传回一个虚拟
    用户ID
    ,例如登录。

    URL中的错误id和GET请求如何?例如:
    GET/api/users/333/addresses
    ?我应该先检查用户333是否存在吗?如果不是,我应该返回400还是404?如果您正在执行GET,那么这就是您尝试获取有效用户或不获取有效用户的关键。如果用户
    333
    不存在,则返回
    404notfound
    。可能包括一个正文,说明找不到用户333,以区别于找不到的404端点