我有以下资源可用于返回特定的公司信息:

[HttpGet]
[Route("{companyId:Guid}")]
public IHttpActionResult Get(Guid companyId)
{
    var company = CompanyRepository.Find(companyId);

    if (company == null)
    {
        return NotFound();
    }
    else
    {
        var responseModel = new CompanyResponseModel()
        {
            CompanyId = company.Id,
            Name = company.Name
        };

        return Ok(responseModel);
    }
}


为什么我们不能在NotFound()调用中包含内容?

例如,我想在错误响应模型中包含一条消息“公司ID不存在”。

这是否可能违反RESTful设计?

最佳答案

根据RFC2616 Section 10,404不会返回有关资源本身的任何信息。
但是,如果您想使用404,则可以改用以下代码:

return Content(HttpStatusCode.NotFound, "Your Content/Message");

08-18 23:56