2015-06-19 19 views
10

Kiedy buduję mój plik swagger.json, nie wiem, którego hosta użyć. Jednak mogę to sprawdzić, gdy moja strona zawiera ładunki swaggerui (w rzeczywistości mogę zaoferować użytkownikowi wybór). Miałem nadzieję, że zobaczę opcję options.host na config dla obiektu swaggerUI - nie widzę jednego. Czy istnieje sposób, aby to zrobić, że nie mogę znaleźć lub po prostu muszę włamać się przez kod i dodać tę możliwość (wskaźniki do najlepszego miejsca na to byłoby mile widziane)najlepszy sposób, aby powiedzieć swaggerui, gdzie host jest

+1

Czy można uzyskać pomoc? https://groups.google.com/forum/#!topic/swagger-swaggersocket/ZGYTzP0DCNM Wygląda na to, że aktualnie nie można ustawić dynamicznie. –

Odpowiedz

3

dwa sposoby

jedną modyfikację swagger.js tak, że przyjmuje opcję hosta. swagger-UI przekazuje opcje do swagger-js, aby działał. Wysłałem polecenie pull to swagger-js z tą poprawką

Drugi wybór polega na tym, że interfejs użytkownika przechwytywania przyjmuje parametr "spec". Oznacza to, że strona hostująca może załadować plik swagger.json, JSON.parse, ustawić w nim host, a następnie przekazać do konstruktora swaggerUi. To jest trudniejsze dla rozmówcy, ale nie wymaga zmiany kodu do puszyć

+2

W przypadku, gdy ludzie chcą monitorować stan żądania ściągania @ pm100, znajduje się on na https://github.com/swagger-api/swagger-js/pull/510#issuecomment-121776076 – Gillingham

4

Swagger ma wbudowany w definicji json dla konfiguracji hosta lub może akceptować wiele wejść.

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

Albo

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

Albo może masz Dynamic Host Definiując var i wywołanie hosta lub nazwę urządzenia lub innych zmiennych środowiskowych.

dynamiczny przykład

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

Pierwsza część nie odpowiada temu, czego potrzebuję. Nie znam gospodarza, kiedy piszę swagger.json. Druga część w zasadzie mówi o zmianie kodu w swagger-js/lib/client.js. Nie mówiąc o tym, co to jest mod - w rzeczywistości to opracowałem i przesłałem do niego plik ciągnienia. – pm100

+0

Sugeruję, aby ta odpowiedź została usunięta, ponieważ nie dotyczy tego, o co faktycznie chodzi w PO, ponieważ wskazuje powyżej. –

3

Oto, co robię, ponieważ załadowana w dokumencie jest tylko obiekt 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 
} 

ten sposób nie zanieczyszcza twoja specyfikacja API z konfiguracją środowiska programistycznego.

0

ten sposób zrobiłem to za pomocą klienta Java:

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

W ostatnich wersjach Swagger UI jest możliwe, aby to zrobić, na przykład w onComplete:

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

1

Jeśli hostują go na tym samym serwerze aplikacji, po prostu usuń klucz hosta z json i podaj względną ścieżkę w kluczu "basePath". as - "basePath": "/ rest/createcampaign".

Powiązane problemy