Есть ли лучший способ проверить, принимает ли запрос JSON? - PullRequest
3 голосов
/ 06 октября 2008

На самом деле, я использую этот способ. У тебя есть способ получше?

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 ]

2 голосов
/ 06 октября 2008

Такой подход может привести к ложным срабатываниям (он не учитывает значения q или типы контента, для которых application / json является подстрокой).

Вы можете найти приличный парсер заголовка Accept в этой статье о XHTML . Вам придется перенести алгоритм на выбранный вами язык и адаптировать его под типы контента, которые вы используете.

1 голос
/ 07 октября 2008

Трудно понять, что вы подразумеваете под «лучше». Строго говоря, вам не нужно беспокоиться о типе контента, чтобы его можно было удалить. Полагаю, технически лучшим способом было бы удалить вызов Select и поместить условие в метод Count.

...