Existe-t-il un meilleur moyen de vérifier si une demande accepte JSON?
-
05-07-2019 - |
Question
En fait, j'utilise cette méthode. Avez-vous un meilleur moyen?
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;
}
La solution
Cette approche peut conduire à des faux positifs (elle ne tient pas compte des q valeurs ni des types de contenu dont application / json est une sous-chaîne).
Vous pouvez trouver un analyseur d'en-tête Accept décent dans cet article sur XHTML . Vous devrez porter l'algorithme dans la langue de votre choix et l'adapter aux types de contenu que vous utilisez.
Autres conseils
Il est difficile de savoir ce que vous entendez par "meilleur". Strictement parlant, vous n'avez pas à vous soucier du type de contenu, vous pouvez donc le supprimer. Je suppose que techniquement, un meilleur moyen serait de supprimer l'appel Select et de placer la condition dans la méthode Count.