Segue um post com anotações do vídeo abaixo que dá boas dicas para validação e manipulação de erro de Web Api do Channel 9.
Status Code (Código de Status)
Forma padrão de comunicação do HTTP.
200 – OK
201 – Created
404 – Not Found
Lista com todos os status:
http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
http://www.w3schools.com/tags/ref_httpmessages.asp
Model Validation
Data Annotations
Adicionando em propriedades para ajudar na validação
· Tipos primitivos validados por padrão
-
Range
Exemplo de validação utilizando Range para limitar a idade de 1 até 120:
https://github.com/MicrosoftLearning/WebAPIDesign/blob/master/04%20-%20Validation%20and%20Error%20Handling/04aModelValidation/Models/User.cs - Required
- CreditCard
-
Todas as opções disponíveis:
https://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations%28v=vs.110%29.aspx
Validações Customizadas
Exemplo de validação customizada utilizando o ModelState.AddModelError() e ModelState.IsValid
https://github.com/MicrosoftLearning/WebAPIDesign/blob/master/04%20-%20Validation%20and%20Error%20Handling/04aModelValidation/Controllers/UsersController.cs
Built-in Helpers
Na classe anscestral ApiController há metodos para ajudar no retorno do HTTP, já definindo o HttpStatusCode (Código de status da requisição HTTP)
Alguns exemplos citados:
- Conflict
- Created
- CreatedAtRoute
- InternalServerError
- NotFound
- Ok
Nesta página há todos disponíveis:
https://msdn.microsoft.com/en-us/library/system.web.http.apicontroller_methods%28v=vs.118%29.aspx
E nesta página do GitHub vários exemplos de funcionamento:
Exception Filters
Artigo sobre a manipulação de erro através do Exception Filters:
http://www.asp.net/web-api/overview/error-handling/exception-handling
Global Exception Logger and Handling (Manipulação e registro de exceções globais)
Artigo sobre Manipulação e registro de exceções globais:
http://www.asp.net/web-api/overview/error-handling/web-api-global-error-handling