2014-09-11 38 views
5

W tej chwili zaimplementowałem Swagger i zauważyłem, że podstawowy adres zasobów jest zakodowany w plikach zasobów JSON, idealnie chciałbym dać użytkownikowi możliwość zmiany adresu bazowego dla różnych jsonów. Tak więc, na przykład, daj im możliwość przedstawienia wpływu z jednego środowiska i umieszczenia go na innym na tej samej stronie, ponieważ pracuję z wieloma środowiskami, w przeciwnym razie musieliby zmienić JSON w każdym ze swoich zasobów czas chcą korzystać z nowego środowiska. Czy ktoś wie, czy to jest możliwe?Czy podstawowy adres URL może zmienić Swagger?

Odpowiedz

3

Jest to możliwe, a ja wdrożenia tego w następujący sposób:

W swaggerui, programowo deklaruję url przez pobieranie url poprzez javascript:

// Get the url: 
    theUrl = window.location.protocol+"//" + window.location.host+"/docs"; 

    window.swaggerUi = new SwaggerUi({ 
    url: theUrl,..other parameters...}) 

w moich plikach json, gdzie Oświadczam zasób, właśnie deklaruję swoją ścieżkę podstawową jako "/", jak pokazano poniżej:

{ 
    "apiVersion": "1.0.0", 
    "swaggerVersion": "1.2", 
    "basePath": "/", 
    "resourcePath": "/api/myapi"....... 

Nadzieję, że pomaga!

1

Aby zmienić dynamicznie nazwę hosta (i zastępują wartości z pliku JSON) z docelowym serwerem (w przypadku gdy wniosek jest wysyłany REST):

$.each(window.swaggerUi.api.apis, function(key, val) { 
    window.swaggerUi.api.apis[key].basePath = "http://target:port"; 
}); 
+0

Kiedy/gdzie jest to kod powinien działać? –

+0

To kod javascript do wykonania na stronie Swagger, aby zmienić wszystkie podstawowe pathes –