Existe uma maneira melhor para verificar se um pedido aceita JSON?
-
05-07-2019 - |
Pergunta
Na verdade, estou usando este caminho. Você tem uma maneira melhor?
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;
}
Solução
Essa abordagem pode levar a falsos positivos (que não leva em conta os valores q ou tipos de conteúdo dos quais application / json é um substring).
Você pode encontrar um acervo considerável cabeçalho Accept analisador em este artigo sobre XHTML . Você vai ter que portar o algoritmo para idioma de sua escolha e adaptá-lo para os tipos de conteúdo que você está usando.
Outras dicas
É difícil saber o que você quer dizer com "melhor". Estritamente falando, você não precisa se preocupar com o tipo de conteúdo, de modo que possa ser removido. Eu acho que tecnicamente a melhor maneira seria para remover o Select chamada e colocar a condição para o método de contagem.