Swagger (Swashbuckle) masquer l'en-tête

J'utilise Swashbuckle pour ajouter de la documentation Swagger à mon ASP.NET Web API project. Comment puis-je cacher l'en-tête par défaut (avec le logo swagger) de la page de documentation sans injecter CSS?

15
demandé sur ranquild 2015-07-26 15:29:58

3 réponses

malheureusement je pense que vous pouvez le faire olny par javascript dès maintenant.

Dans votre SwaggerConfig.cs vous pouvez injecter une .js fichier comme ceci:

.EnableSwaggerUi(c =>
{                        
    c.InjectJavaScript(thisAssembly, "yournamespace.yourscript.js");
});

Donc dans ce script, vous pouvez faire ce que vous voulez, comme masquer l'en-tête:

document.querySelector("#header").style.display = "none";

post montre comment personnaliser l'en-tête de en mettant deux zones de texte.

Edit:

l'approche suggérée dans la réponse de @dimaKudr est meilleure. Injecter un SSC le style est suffisant pour masquer le menu (JS n'est pas nécessaire).

9
répondu fabriciorissetto 2018-03-22 14:51:41

lorsque j'ai injecté JS comme suggéré ci-dessus, l'en-tête clignotait au chargement de la page. Il a été montré pendant une seconde puis a été désactivé par script. Il y a une approche qui fonctionne mieux pour moi. https://github.com/domaindrivendev/Swashbuckle/issues/476

Vous pouvez injecter CSS au lieu de JS:

#header {
display:none;
}
11
répondu dimaKudr 2015-09-02 09:42:54

quand j'ai rencontré ça pour la première fois, j'ai commencé à injecter du css/js, mais à chaque fois c'était une lutte et une sorte de "hackish" pour cacher des trucs avec du CSS injecté. Ainsi, après un certain temps, j'ai simplement remplacé le fichier index par une version modifiée de ce index.html Vous pouvez le modifier comme bon vous semble. Supprimer le div avec l'en-tête id=supprimera l'en-tête. En outre, cela rend des choses telles que le remplacement du logo etc beaucoup plus simple. Pour la partie logo, vous pouvez définir le logo src à en 64 bits comme indiqué ici encoder l'image. Aussi supprimer le favicon lié dans l'onglet est aussi simple que supprimer la ligne. Ajouter aussi des liens vers d'autres pages etc. est trivial. L'injection de l'indice en vous swaggerconfig comme ceci

c.CustomAsset("index", thisAssembly, "Path.To.index.html");

N'oubliez pas de définir votre index de ressource intégrée.

0
répondu SJFJ 2017-07-20 06:48:13