2017-10-12 6 views
2

J'ai une API Web ASP.NET Core 2.0 dans laquelle j'ai ajouté Swagger via Swashbuckle. Ce qui est gentil. L'option app.UseDeveloperExceptionPage() est également activée dans ASP.NET Core. Ce qui est gentil.Est-ce que Swagger peut rendre le contenu de app.UseDeveloperExceptionPage()?

Mais ils ne jouent pas bien ensemble. Parce que SwaggerUI affiche simplement le code HTML renvoyé sous forme de texte.

Pour les requêtes GET, ce n'est pas un gros problème car je colle simplement l'URL dans un navigateur. Mais pour POST cela ne fonctionne pas. Donc je me demandais s'il y avait un moyen de rendre SwaggerUI rendre le html lorsque l'en-tête Content-Type est text/html. Je suis incapable de trouver quoi que ce soit lié à ce qui est un peu déconcertant :)

Répondre

1

Des Swagger devs:

Nous devons nettoyer le code HTML pour éviter d'injecter des balises et permettant XSS vulnérabilités. Alors oui, le HTML brut est ce que vous devriez vous attendre à voir.

Cependant, vous pouvez faire le changement vous-même à Swagger-ui.js

--- swagger-ui.js 2015-09-19 20:58:10.000000000 +0200 
+++ swagger-ui.js 2015-11-16 13:45:26.958266568 +0100 
@@ -31855,9 +31855,10 @@ 

    // HTML 
    } else if (contentType === 'text/html') { 
-  code = $('<code />').html(_.escape(content)); 
-  pre = $('<pre class="xml" />').append(code); 
- 
+  var iframe = document.createElement('iframe'); 
+  iframe.srcdoc = content; 
+  iframe.style = 'width: 100%; height: 500px;'; 
+  pre = iframe; 
    // Plain Text 
    } else if (/text\/plain/.test(contentType)) { 
     code = $('<code />').text(content); 

code fourni par nicksellen à https://github.com/swagger-api/swagger-ui/issues/1748

Pour intégrer ce changement à l'aide Swashbuckle:

  1. Télécharger Swashbuckle de GitHub
  2. swagger-u i.js se trouve dans le projet Swashbuckle.AspNetCore.SwaggerUI dans le dossier bower_components \ swagger-ui \ dist. Effectuez les modifications ci-dessus et compilez.
  3. Dans votre projet, supprimer le paquet Swashbuckle NuGet et ajouter une référence aux DLL créées à l'étape 2.

Depuis NuGet est pas gérer plus ce paquet, il sera à vous de vérifier périodiquement le projet Swashbuckle et répétez le processus si vous voulez des mises à jour.

+0

Un doux merci. Maintenant, j'ai juste besoin de comprendre comment intégrer cela avec Swashbuckle :) –

+0

Edited réponse à inclure comment intégrer avec Swashbuckle. –

+0

Vous êtes l'homme :) –