有没有更好的方法来验证请求是否接受JSON?

时间:2008-10-06 17:10:11

标签: c# asp.net json request content-type

实际上,我正在使用这种方式。你有更好的方法吗?

private bool AcceptJson(HttpRequest request)
{
    const string JsonType = "application/json";

    if (request.ContentType.ToLower(CultureInfo.InvariantCulture).StartsWith(JsonType))
    {
        return true;
    }

    if (request.AcceptTypes.Select(t => t.ToLower(CultureInfo.InvariantCulture) == JsonType).Count() > 0)
    {
        return true;
    }

    return false;
}

2 个答案:

答案 0 :(得分:2)

这种方法可能导致误报(它不考虑q值或应用程序/ json是子字符串的内容类型)。

你可以在this article about XHTML中找到一个不错的Accept头解析器。您必须将算法移植到您选择的语言中,并根据您正在使用的内容类型进行调整。

答案 1 :(得分:1)

很难通过“更好”来了解你的意思。严格来说,您无需担心内容类型,因此可以将其删除。我想在技术上更好的方法是删除Select调用并将条件放入Count方法。