【发布时间】:2020-06-24 18:08:30
【问题描述】:
我构建了这个 API,如果找到该 Id,它将返回数据。但是,如果找不到该 ID,我将返回 409。当我在邮递员中对其进行测试时,我看到状态为 409 是否正确?这就是我所需要的,还是应该在正文中返回一些文本?
[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);
}
}
【问题讨论】:
-
我看到 404 的状态是正确的吗? 是的……您需要做的就是阅读文档:创建一个 NotFoundResult 产生一个 Status404NotFound 响应.
-
404 是“未找到”大多数浏览器的正确 HTTP 代码,并且基于此内容将显示“未找到”。可以构造带有特定错误消息的“未找到”结果,但没有超级简单的内置方法,请参阅:stackoverflow.com/questions/20139621/…
-
顺便说一下,虽然返回“NotFound”是技术上正确的,但请考虑您的设计,因为只有 404 并不能告诉我我的 type未找到,我的 id 未找到,或者即使我只是错误地输入了 URI(因为尝试对
http://yourapi/dummyroute进行 GET 操作也会也给出找不到整个 route 的 404...我现在更喜欢返回一个更明确的数据类型,其属性指示成功或失败。 -
顺便说一句,您返回时未找到,如果您看到 409,则说明有问题。
标签: c# asp.net-web-api2