API 未找到记录

API Record not found

我构建了这个 API,如果找到该 ID,它将接收该 ID 它将 return 数据。但是,如果找不到该 ID,我会 return 409。当我在邮递员中对其进行测试时,我看到状态为 409 是否正确?这是我所需要的吗?还是应该 return 正文中的一些文字?

    [HttpGet]
    public IHttpActionResult Read(string type, string id)
     {
        if (id== null)
        {
           var msg = new HttpResponseMessage(HttpStatusCode.NotFound) { ReasonPhrase = "Unable to Find Id" };
msg.Content= new StringContent($"No entity with {id} was found");
           return ResponseMessage(msg);
        }
     }

您确实看到 "not found" 文本:

您在 body 中看不到任何内容,因为您的 API 没有发送 body,只是一个 HTTP header

回复您的评论,并在 GPW 的建议中链接,return 一些自定义的东西 - 让错误成为错误,并将这种可预见的情况作为 "OK but no" 响应,也许:

[HttpGet]
public ActionResult Read(string type, string id)
 {
    if (id == null)
       return Json(new { status= "fail", message= "id parameter is required" });
    else if (type == null)
       return Json(new { status= "fail", message= "type parameter is required" });


    var ent = dbcontext.Entity.FirstOrDefault(e => e.Type == type && e.Id == id);

    if(ent == null)
      return Json(new { status="fail", message= "No entity with that type/id was found" });
    else
      return Json(new { status="ok", entityName= ent.Name });

 }

在我们的一个应用程序中,我们确实使用 HTTP 错误来改变客户端的行为 - 客户端反应应用程序中有一个承诺链,我们使用 returning 一个错误来停止链的处理,解析错误,然后返回解析知道 JSON 的形状略有不同。我不相信这是一个很好的方法,因为它使客户端比它本来可以的更复杂,但如果你想这样做,那么确定,看看 returning 有意义的 http 错误的方法。就个人而言(和 GPW 提到它)甚至调试,很多时候我错过了邮递员中的 return 代码,得到了一个空白的响应,被误导认为其他事情是错误的而不是实际发生的事情/得到了 404 并认为后端找不到实体,而实际上我得到了 URL 错误并且由于不同的原因得到了 404 等等