System.Net la classe HttpStatusCode n'a pas de code 422
y a-t-il un moyen de gérer le code d'état http 422 avec élégance. Je suis à la recherche de la meilleure pratique ici. Je sais que HttpStatusCode est un enum donc ce que j'ai essayé est ce,
HttpStatusCode Unprocessable = (HttpStatusCode)422;
if (Response == (HttpStatusCode)422)
mais ne me permet pas de les comparer. Suis-je en train de faire quelque chose de mal ici?
Quelle est la meilleure façon d'ajouter ce code d'État à l'exécution?
2 réponses
J'utilisais RestSharp qui renvoie le code d'état de la réponse du serveur dans une propriété de type HttStatusCode
et j'avais besoin de vérifier moi-même une réponse 422, mais le type ne l'inclut pas. Heureusement, j'ai quand même pu tester en utilisant ce qui suit:
if(response.StatusCode == (HttpStatusCode)422)
{
// Do my stuff..
}
si plus d'une action de votre API peut éventuellement retourner un 422, vous pouvez envisager d'envelopper la vérification dans une méthode d'extension comme suit:
public static bool IsUnprocessableEntityResponse(this HttpResponseMessage message)
{
Requires.NotNull(message, nameof(message));
return (int) message.StatusCode == StatusCodes.Status422UnprocessableEntity;
}
que vous pouvez ensuite utiliser dans votre client comme suit:
if (response.IsUnprocessableEntityResponse())
return Response.UnprocessableEntity<Resource>();
tout en évitant également le nombre magique 422 dans votre code source en même temps.