解析接受标头

Dou*_*ean 25 regex asp.net http http-headers

有没有人有任何建议(或正则表达式)来解析HTTP Accept标头?

我试图在ASP.NET MVC中进行一些内容类型的协商.似乎没有内置方式(这很好,因为这里有很多思想流派),但解析并不是完全无关紧要的,如果有人已经完成,我宁愿不重新发明轮子它很好,愿意分享.

Han*_*Gay 9

你看过这篇文章吗?它提供了一个非常全面的实现,用于解析Accept头并随后对其执行一些有用的操作.


Mar*_*ell 5

作为.NET 4.5的(我认为微软已经对框架的版本信息<4.5,而掩盖这些天),您可以使用的内置的解析器一个来自System.Net.Http.Headers

public IOrderedEnumerable<MediaTypeWithQualityHeaderValue> GetMediaTypes(string headerValue) =>
    headerValue?.Split(',')
        .Select(MediaTypeWithQualityHeaderValue.Parse)
        .OrderByDescending(mt => mt.Quality.GetValueOrDefault(1));
Run Code Online (Sandbox Code Playgroud)

然后,您可以执行以下操作:

var headerValue = "application/json, text/javascript, */*; q=0.01";
var mediaTypes = GetMediaTypes(headerValue);
Run Code Online (Sandbox Code Playgroud)

为您提供所有媒体类型的良好列表,其中首选选项为第一项。这里有一个LINQPad Dump中的mediaTypes从示例结果:

LINQPad结果转储

对此提示进行提示,以使我步入正轨。