comment retourner json msg d'erreur dans asp.net l'api web?
Je voudrais revenir un json errormessage mais pour le moment dans un violon, je ne vois pas cela dans le json: panneau de
string error = "An error just happened";
JsonResult jsonResult = new JsonResult
{
Data = error,
JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
response = Request.CreateResponse(HttpStatusCode.BadRequest, jsonResult.Data);
comment faire?
Vous devez vous connecter pour publier un commentaire.
Quelques points:
Si tout ce que vous cherchez à faire est de retourner une réponse d'erreur contenant un message d'erreur simple, Web API fournit un
CreateErrorResponse
méthode pour cela. Ainsi, vous pouvez simplement faire:Cela se traduira dans la suite de la réponse HTTP (d'autres en-têtes omis par souci de concision):
Si vous voulez retourner un objet personnalisé au lieu de cela, vous pouvez utiliser
Request.CreateResponse
comme vous le faisiez, mais ne pas utiliser le MVCJsonResult
. Au lieu de cela, il suffit de passer votre objet directement àCreateResponse
:Maintenant, disons que vous faites, mais vous n'obtenez pas de retour JSON à partir du serveur. Il est important de réaliser que l'API Web utilise normalement un type de contenu de la négociation pour déterminer le format à utiliser lors de l'envoi de la réponse en retour. Que signifie, il ressemble à la
Accept
en-tête qui a été envoyé par le client à la demande. Si leAccept
en-tête contientapplication/xml
, par exemple, Web API sera de retour XML. Si l'en-tête contientapplication/json
alors il sera de retour JSON. Ainsi, vous devez vous assurer que votre client est l'envoi de la bonneAccept
en-tête.Cela dit, il existe des moyens pour forcer l'API Web de toujours renvoyer les données dans un format spécifique, si c'est ce que vous voulez vraiment. Vous pouvez le faire au niveau de la méthode par le recours à une surcharge de
CreateResponse
qui précise le type de contenu:Alternativement, vous pouvez supprimer le XML formateur de la configuration tout à fait dans votre
WebApiConfig
fichier:Cette force de l'API Web de toujours utiliser JSON indépendamment de ce que le client demande.
vous pouvez le retour JSON comme ci-dessous,
Je recommande d'utiliser IHttpActionResult sur votre méthode de type de retour au lieu HttpResponseMessage, si votre api méthode de type de retour est IHttpActionResult. vous pouvez retourner comme;
vous pouvez vérifier aussi que le lien sur les meilleures pratiques de erreur de retour Surtout @Daniel Peu de réponse est vraiment utile.
Je connais la réponse ajouté à la fin, mais peut-être que quelqu'un stand en bonne place.
JsonResult est un concept MVC. Il ne fonctionne pas dans l'API Web. Une façon de renvoyer explicitement le contenu json est d'utiliser la classe que j'ai créé dans cette réponse https://stackoverflow.com/a/20504951/6819
Ajouter
config.Des formateurs.Supprimer(config.Des formateurs.XmlFormatter);
ligne dans votre WebApiConfig fichier
Vous pouvez directement configurer le code de statut actuel de l'adresse HTTP de la réponse par l'Intervention de la propriété