有没有人有任何建议(或正则表达式)来解析HTTP Accept标头?
我试图在ASP.NET MVC中进行一些内容类型的协商.似乎没有内置方式(这很好,因为这里有很多思想流派),但解析并不是完全无关紧要的,如果有人已经完成,我宁愿不重新发明轮子它很好,愿意分享.
你看过这篇文章吗?它提供了一个非常全面的实现,用于解析Accept头并随后对其执行一些有用的操作.
作为.NET 4.5的(我认为微软已经对框架的版本信息<4.5,而掩盖这些天),您可以使用的内置的解析器一个来自System.Net.Http.Headers
:
public IOrderedEnumerableGetMediaTypes(string headerValue) => headerValue?.Split(',') .Select(MediaTypeWithQualityHeaderValue.Parse) .OrderByDescending(mt => mt.Quality.GetValueOrDefault(1));
然后,您可以执行以下操作:
var headerValue = "application/json, text/javascript, */*; q=0.01"; var mediaTypes = GetMediaTypes(headerValue);
为您提供所有媒体类型的良好列表,其中首选选项为第一项。这里有一个LINQPad Dump
中的mediaTypes
从示例结果:
对此提示进行提示,以使我步入正轨。