web-dev-qa-db-fra.com

meilleure façon de dire à swaggerui où se trouve l'hôte

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)

14
pm100

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

3
pm100

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.

exemple dynamique

if (typeof this.Host === 'undefined' || this.Host === '') {
  this.Host = location.Host;
}
if (location.port) {
  this.Host = this.Host + ':' + location.port;
}
5
Fitch

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.

3
Chris Crewdson

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".

2
vm001uec

Voici comment j'ai fait cela en utilisant le client Java:

DefaultApi api = new DefaultApi();
api.getApiClient().setBasePath("http://localhost:8080");
//call the API
0
Eduardo Andrade

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.

swagger doc

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.

 enter image description here

0
felix at housecat