如果服务层未找到请求的资源,则返回null到Web API控制器;什么是将HttpStatusCode.NotFound响应抛回客户端而不在控制器中对其进行硬编码的最佳方法,并检查它是否为空?
解决方法
就个人而言,我只是根据Oppositional的评论对控制器进行检查,但你要求的是完全合理的.再次使用每个控制器附加的动作过滤器(或全局注册),你可以沿着这些方向做一些事情:
示例型号:
public class Foo { public string Bar { get; set; } }
示例控制器:
public class FoosController : ApiController { [NullObjectActionFilter] public Foo Get(string id) { // - Returns model and 200 //return new Foo() { Bar = "TEST" }; // - Returns 404 //return null; } }
过滤器:
public class NullObjectActionFilter : ActionFilterattribute { public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext) { object outValue = null; actionExecutedContext.Response.TryGetContentValue<object>(out outValue); if (outValue == null) { throw new HttpResponseException(HttpStatusCode.NotFound); } base.OnActionExecuted(actionExecutedContext); } }
原文地址:https://www.jb51.cc/aspnet/249093.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。