web-dev-qa-db-fra.com

Comment lever l'exception dans l'API Web?

Comment puis-je lever une exception dans ASP.net Web Api?

Voici mon code:

public Test GetTestId(string id)
{
    Test test = _test.GetTest(id);

    if (test == null)
    {
        throw new HttpResponseException(HttpStatusCode.NotFound);
    }

    return test;
}

Je ne pense pas que je fais la bonne chose, comment mon client sait-il que c'est un HTTP 404 Erreur?

34
Alvin

C'est très bien.

Alternativement, si vous souhaitez fournir plus d'informations (pour permettre, comme vous le dites, au client de se distinguer du 404 normal):

    if (test == null)
    {
         throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.NotFound, 
"this item does not exist"));
    }
65
Filip W

Cela devrait vous aider à mieux comprendre la gestion des erreurs WebAPI:

http://blogs.msdn.com/b/youssefm/archive/2012/06/28/error-handling-in-asp-net-webapi.aspx

Ce que vous avez dans votre extrait de code devrait fonctionner. Le serveur renverra un 404 Not Found au client si le test est nul sans corps de réponse. Si vous voulez un corps de réponse, vous devriez envisager d'utiliser Request.CreateErrorResponse comme expliqué dans le billet de blog ci-dessus et de transmettre cette réponse à HttpResponseException.

5
Youssef Moussaoui