web-dev-qa-db-fra.com

Renvoyer un fichier "brut" dans ASP.NET Core 2.0 Web Api

AFAIK retourne généralement les données dans ASP.NET Core Web Api en utilisant IActionResult et en fournissant, par exemple, des exemples. un résultat OkObject. Cela fonctionne bien avec les objets, mais que se passe-t-il si j'ai obtenu une chaîne JSON d'une manière ou d'une autre et que je veux simplement renvoyer ce JSON à l'appelant?

par exemple.

public IActionResult GetSomeJSON()
{
    return Ok("{ \"name\":\"John\", \"age\":31, \"city\":\"New York\" }");
}

Voici ce que fait ASP.NET Core: il prend la chaîne JSON et l’enveloppe à nouveau dans JSON (par exemple, elle échappe au JSON)

Renvoyer du texte brut avec [Produces("text/plain")] fonctionne en fournissant le contenu "RAW", mais définit également le type de contenu de la réponse sur PLAIN au lieu de JSON. Nous utilisons [Produces("application/json")] sur nos contrôleurs.

Comment puis-je renvoyer le JSON que j'ai comme type de contenu JSON normal sans l'échapper?

Remarque: peu importe la méthode d'acquisition de la chaîne JSON, il peut s'agir d'un service tiers ou de besoins de sérialisation particuliers, de sorte que nous souhaitons effectuer une sérialisation personnalisée au lieu d'utiliser le code par défaut JSON.NET. sérialiseur.

26
MichelZ

Et bien sûr, quelques minutes après avoir posté la question, je suis tombé sur une solution :)

Il suffit de retourner Content avec le type de contenu application/json...

return Content("{ \"name\":\"John\", \"age\":31, \"city\":\"New York\" }", "application/json");
42
MichelZ

Dans votre action, remplacez Ok() par la méthode Content(), qui vous permet de définir le contenu (contenu brut), le type de contenu et le code d'état de votre réponse: https: //docs.Microsoft.com/en-us/dotnet/api/Microsoft.aspnetcore.mvc.contentresult?view=aspnetcore-2.

17
Arash Motamedi