从WebApi控制器返回http状态代码?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (111)

正在尝试返回一个304的状态代码,有没有为WebAPI控制器中的GET方法进行修改。

唯一途径是这样的:

public class TryController : ApiController
{
    public User GetUser(int userId, DateTime lastModifiedAtClient)
    {
        var user = new DataEntities().Users.First(p => p.Id == userId);
        if (user.LastModified <= lastModifiedAtClient)
        {
             throw new HttpResponseException(HttpStatusCode.NotModified);
        }
        return user;
    }
}
提问于
用户回答回答于

如果希望将动作签名保留为返回用户,还可以执行以下操作:

public User GetUser(int userId, DateTime lastModifiedAtClient) 
用户回答回答于

将签名更改为HttpResponseMessage 还可以使用Request.CreateResponse函数

[ResponseType(typeof(User))]
public HttpResponseMessage GetUser(HttpRequestMessage request, int userId, DateTime lastModifiedAtClient)
{
    var user = new DataEntities().Users.First(p => p.Id == userId);
    if (user.LastModified <= lastModifiedAtClient)
    {
         return new HttpResponseMessage(HttpStatusCode.NotModified);
    }
    return request.CreateResponse(HttpStatusCode.OK, user);
}

扫码关注云+社区

领取腾讯云代金券