Lorsque je crée mon fichier swagger.json, je ne sais pas quel hôte utiliser. Cependant, je peux me débrouiller avec ma page qui héberge des charges swaggerui (en fait, je souhaiterais peut-être offrir un choix à l'utilisateur). J'espérais voir une option.Host sur la config pour l'objet swaggerUI - je ne vois pas un. Existe-t-il un moyen de le faire que je ne trouve pas ou dois-je simplement me frayer un chemin dans le code et ajouter cette fonctionnalité (des indicateurs du meilleur endroit pour le faire seraient les bienvenus)
deux manières
On modifie swagger.js pour qu’il accepte l’option Host. swagger-UI passe les options à swagger-js pour que cela fonctionne. J'ai soumis un pull à swagger-js avec ce correctif
Le second choix est que swagger-UI accepte un paramètre 'spec'. Cela signifie que la page d'hébergement peut charger le fichier swagger.json, JSON.parse, définir "Host" dans le fichier, puis passer au constructeur swaggerUi. Ceci est plus difficile pour l'appelant mais ne nécessite pas de changements de code pour swagger
Swagger a une définition json intégrée pour Host config, ou peut accepter plusieurs entrées.
{
"swagger": "2.0",
"info": {
"title": "Why API",
"description": "Don't make that mistake again",
"version": "0.0.1"
},
"Host": "127.0.0.1:3000",
"schemes": [
"https"
]
}
Ou
"Host": "test.mydomain.com:3000",
"schemes": [
"https"
],
Ou vous pouvez avoir un hôte dynamique en définissant une variable et en appelant un nom d’hôte ou un nom d’ordinateur ou d’autres variables d’environnement.
if (typeof this.Host === 'undefined' || this.Host === '') {
this.Host = location.Host;
}
if (location.port) {
this.Host = this.Host + ':' + location.port;
}
Voici ce que je fais, car le document chargé dans est un objet JSON:
var swaggerDoc = require('./api/swagger.json');
if (process.env.NODE_ENV === 'development') {
swaggerDoc.Host="localhost:" + process.env.PORT
}
// Initialize the Swagger middleware
swaggerTools.initializeMiddleware(swaggerDoc, function (middleware) {
// Other initialization
}
Ainsi, vous ne polluez pas vos spécifications d'API avec la configuration de l'environnement de développement.
Si vous l'hébergez sur le même serveur d'applications, supprimez simplement la clé Host du json et indiquez le chemin relatif dans la clé "basePath". as - "basePath": "/ rest/createcampaign".
Voici comment j'ai fait cela en utilisant le client Java:
DefaultApi api = new DefaultApi();
api.getApiClient().setBasePath("http://localhost:8080");
//call the API
si vous utilisez OpenApi 3.0
Les variables peuvent avoir des valeurs arbitraires ou être limitées à une énumération. Dans tous les cas, une valeur par défaut est requise, elle sera utilisée si le client ne fournit pas de valeur.
Dans swagger-ui, il y aura la valeur par défaut, mais le champ est un champ de saisie, il est donc possible de le personnaliser au moment de l'exécution.