2015-06-19 12 views
10

Quando costruisco il mio file swagger.json non so quale host usare. Comunque posso risolverlo quando la mia pagina che ospita carichi swaggerui (in effetti potrei voler offrire all'utente una scelta). Speravo di vedere un options.host sulla configurazione per l'oggetto swaggerUI - Non ne vedo uno. Esiste un modo esistente di fare ciò che non riesco a trovare o devo semplicemente passare attraverso il codice e aggiungere questa capacità (puntatori al posto migliore per farlo sarebbe benvenuto)Il modo migliore per dire a swaggerui dove l'host è

+1

è utile? https://groups.google.com/forum/#!topic/swagger-swaggersocket/ZGYTzP0DCNM Sembra che potrebbe non essere possibile impostare dinamicamente al momento. –

risposta

3

due modi

Uno modificare swagger.js in modo che l'opzione ospite accetta. swagger-UI passa le opzioni a swagger-js in modo che funzioni. Ho inviato un pull a swagger-js con questa correzione

La seconda scelta è che swagger-UI accetta un parametro "spec". Ciò significa che la pagina di hosting può caricare il file swagger.json, JSON.parse, impostare 'host' al suo interno e quindi passare al costruttore swaggerUi. Questo è più difficile per il chiamante, ma non richiede modifiche al codice di spavalderia

+2

Nel caso in cui le persone volessero monitorare lo stato della richiesta di ricezione @ pm100, si trova all'indirizzo https://github.com/swagger-api/swagger-js/pull/510#issuecomment-121776076 – Gillingham

4

Swagger ha un built-in in json definition per host config, o può accettare più input.

{ 
    "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" 
    ] 
} 

O

"host": "test.mydomain.com:3000", 
"schemes": [ 
    "https" 
], 

Oppure si può avere una serie dinamica definendo un var e chiamando un nome host o di una macchina o di altre variabili d'ambiente.

esempio dinamica

if (typeof this.host === 'undefined' || this.host === '') { 
    this.host = location.host; 
} 
if (location.port) { 
    this.host = this.host + ':' + location.port; 
} 
+1

la prima parte non corrisponde a quello che mi serve. Non conosco l'host nel momento in cui scrivo swagger.json. La seconda parte dice fondamentalmente di cambiare il codice in swagger-js/lib/client.js. Senza dire quale sia la mod - in effetti ho risolto questo problema e ho inviato un pull a quel file – pm100

+0

Suggerisci che questa risposta debba essere rimossa poiché non affronta ciò che l'OP sta effettivamente chiedendo, come indicato sopra. –

3

Ecco quello che faccio, dal momento che il caricata nel documento è solo un oggetto 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 
} 

In questo modo non inquinare le specifiche API con la configurazione dell'ambiente di sviluppo.

0

Questo è quanto ho fatto questo utilizzando il client Java:

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

Nelle versioni recenti di Swagger interfaccia utente è possibile fare questo, per esempio in onComplete:

window.swaggerUi.api.setHost("your.host:4242");

1

Se lo stiamo ospitando sullo stesso server delle app, basta rimuovere la chiave dell'host da json e fornire il percorso relativo nella chiave "basePath". as - "basePath": "/ rest/createcampaign".

Problemi correlati