Comment envoyer des en-têtes personnalisés avec des demandes dans l'interface utilisateur Swagger?
J'ai quelques points de terminaison dans l'API - /user/login
/products
.
Dans Swagger UI je poste email
et password
à /user/login
et en réponse je reçois un token
chaîne.
Alors, je peux copier le jeton de la réponse et vous voulez l'utiliser comme Authorization
valeur d'en-tête dans les demandes pour toutes les url si elle est présente, et à /products
comme un exemple.
Dois-je créer une entrée de texte manuellement quelque part sur le Style de l'INTERFACE utilisateur de la page, puis de mettre le jeton et d'une certaine injecter dans les demandes ou il y a des outils pour les gérer au mieux?
source d'informationauteur Sergei Basharov
Vous devez vous connecter pour publier un commentaire.
Vous pouvez ajouter un paramètre d'en-tête à votre demande, et Swagger-UI va le montrer comme une zone de texte modifiable:
Vous pouvez également ajouter une définition de la sécurité avec le type
apiKey
:La
securityDefinitions
objet définit les régimes de sécurité.La
security
objet (appelé "exigences de sécurité" dans Swagger–OpenAPI), s'applique à un régime de sécurité à un contexte donné. Dans notre cas, nous allons l'appliquer à l'ensemble de l'API en déclarant la sécurité de l'exigence d'un haut niveau. On peut éventuellement le remplacer au sein de chaque élément de chemin d'accès et/ou de méthodes.Ce serait la meilleure façon de spécifier votre régime de sécurité; et il remplace le paramètre d'en-tête de la premier exemple. Malheureusement, Swagger-UI n'offre pas une zone de texte pour contrôler ce paramètre, au moins dans mon test, jusqu'à présent.
Sur ASP.net WebApi, de la façon la plus simple de passer-en un en-tête sur Swagger UI est de mettre en œuvre Appliquer(...) méthode sur IOperationFilter interface.
L'ajouter à votre projet:
Sur SwaggerConfig.csenregistrer le filtre à partir de ci-dessus à l'aide de c.OperationFilter<T>():
Dans
ASP.NET Core 2 Web API
à l'aide de Swashbuckle.AspNetCore paquet 2.1.0, de mettre en œuvre un IDocumentFilter:SwaggerSecurityRequirementsDocumentfilter.cs
En Démarrage.cs, configurer une définition de la sécurité et d'enregistrer le filtre personnalisé:
À Swagger de l'INTERFACE utilisateur, cliquez sur Autoriser bouton et réglez la valeur du jeton.
Résultat:
J'ai atterri ici parce que j'essayais de conditionnellement ajouter des paramètres d'en-tête dans le Style de l'INTERFACE utilisateur, basée sur ma propre
[Authentication]
attribut j'ai ajouté à ma méthode de l'API. Suivant le soupçon que @Corcus répertoriés dans un commentaire, j'ai été en mesure de tirer ma solution, et j'espère que ça aidera d'autres personnes.L'aide de la Réflexion, c'est de vérifier si la méthode imbriquée dans
apiDescription
a l'attribut souhaité (MyApiKeyAuthenticationAttribute, dans mon cas). Si elle le fait, je peux ajouter mon choix paramètres d'en-tête.Pour ceux qui utilisent NSwag et ont besoin d'un en-tête personnalisé:
Swagger de l'INTERFACE utilisateur sera alors inclure une Autoriser bouton.