Retourner le code D'état HTTP personnalisé de WebAPI 2 endpoint
je travaille sur un service dans WebAPI 2, et le terminal renvoie actuellement un IHttpActionResult
. Je voudrais retourner un code d'état 422
, mais comme il n'est pas dans l'énumération HttpStatusCode
, je suis à une perte quant à la façon dont il serait envoyé, puisque tous les constructeurs exigent un paramètre de HttpStatusCode
en l'état actuel, je renvoie BadResult(message)
, mais retourner un message 422
+ serait plus descriptif et utile pour mes clients. Des idées?
3 réponses
selon la spécification C#:
l'ensemble des valeurs qu'un type enum peut prendre n'est pas limité par ses membres enum. En particulier, toute valeur du type sous-jacent d'un enum peut être moulée au type enum et est une valeur valide distincte de ce type enum
vous pouvez donc lancer le code d'état 422 en HttpStatusCode.
exemple de contrôleur:
using System.Net;
using System.Net.Http;
using System.Web.Http;
namespace CompanyName.Controllers.Api
{
[RoutePrefix("services/noop")]
[AllowAnonymous]
public class NoOpController : ApiController
{
[Route]
[HttpGet]
public IHttpActionResult GetNoop()
{
return new System.Web.Http.Results.ResponseMessageResult(
Request.CreateErrorResponse(
(HttpStatusCode)422,
new HttpError("Something goes wrong")
)
);
}
}
}
return Content((HttpStatusCode) 422, whatEver);
"151910920 de crédit" est de: Retour de contenu avec IHttpActionResult pour les non-réponse OK
et votre code doit être <= 999
et ignorez les codes entre 100 et 200.
j'utilise cette façon simple et élégante.
public ActionResult Validate(User user)
{
return new HttpStatusCodeResult((HttpStatusCode)500,
"My custom internal server error.");
}
puis contrôleur angulaire.
function errorCallBack(response) {
$scope.response = {
code: response.status,
text: response.statusText
}});
J'espère que ça vous aidera.