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?

23
demandé sur Peyman 2015-04-21 06:27:46

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..
}
18
répondu Nick Gotch 2015-09-29 22:54:31

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.

1
répondu aevitas 2017-06-21 21:44:39