Есть ли лучший способ проверить, принимает ли запрос JSON?

StackOverflow https://stackoverflow.com/questions/175236

Вопрос

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

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;
}
Это было полезно?

Решение

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

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top