asp.net – Web API中的每路径格式化程序配置
发布时间:2020-12-15 20:52:17 所属栏目:asp.Net 来源:网络整理
导读:标题或多或少都说明了一切. 我正在尝试配置 JSON MediaTypeFormatter以使每个路由的行为不同. 具体来说,我的WebAPI中有两条路由映射到同一个控制器. 每条路线执行相同的操作并返回相同的数据,但出于与现有消费者向后兼容的原因,它们必须略微区别地输出格式.
标题或多或少都说明了一切.
我正在尝试配置 JSON MediaTypeFormatter以使每个路由的行为不同. 具体来说,我的WebAPI中有两条路由映射到同一个控制器. 我可以在Controller中放入一些代码,以确定请求是在传统路由还是新路由中进入,并相应地更改格式化程序. 我还可以使用ActionFilter来更改所需的格式化程序. 然而,我想知道是否有一种方法可以在每个路由级别配置格式化程序,因为这是我的API行为不同的抽象级别.这可以是路径配置点,也可以是代理处理程序. 有什么建议? 解决方法
我不完全确定你的两个JSON有多少不同以及你用它们做了什么,但如果你问我,我会在格式化程序中做到这一点:
public class MyJsonMediaTypeFormatter : JsonMediaTypeFormatter { private IHttpRouteData _route; public override MediaTypeFormatter GetPerRequestFormatterInstance(Type type,HttpRequestMessage request,System.Net.Http.Headers.MediaTypeHeaderValue mediaType) { _route = request.GetRouteData(); return base.GetPerRequestFormatterInstance(type,request,mediaType); } public override System.Threading.Tasks.Task WriteToStreamAsync(Type type,object value,System.IO.Stream writeStream,HttpContent content,TransportContext transportContext) { if (_route.Route.RouteTemplate.Contains("legacy")) { //here set the SerializerSettings for non standard JSON //I just added NullValueHandling as an example this.SerializerSettings = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }; } return base.WriteToStreamAsync(type,value,writeStream,content,transportContext); } } 然后,您将使用此替换默认的JsonMEdiaTypeFormatter. config.Formatters.RemoveAt(0); config.Formatters.Insert(0,new MyJsonMediaTypeFormatter()); 在Web API中,您可以拥有仅在特定路由上运行的DelegatingHandler,但由于Formatters集合是全局的,因此没有任何意义,因此即使从路由范围的处理程序中也没有必要在运行时修改它. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – 有什么技巧/技巧使用亚音速与Asp.Net MVC框
- 什么时候最好在ASP.NET中使用静态函数?
- asp.net-mvc-4 – 为什么我们需要MVC中的Web API? mvc中re
- asp.net – 在IIS中,为什么窗口验证不显示为我的Web应用程序
- ASP.NET MVC,Node.JS.他们可以互动吗?
- ASP.NET使用VB设置文件的路径
- asp.net-mvc – ASP .NET MVC保护控制器/动作
- asp.net-core – ASP.NET 5,希望将实体框架与Web Project分
- asp.net-mvc – 你如何指定在列表框中显示多少项目(高度)
- asp.net-mvc – TimeSpan的MVC编辑器模板
推荐文章
站长推荐
热点阅读