2016-05-11 4 views
3

Ich habe eine Maven Feder Anwendung, die Jersey für eine REST API verwendet. Ich habe eine Eigenschaftendatei für jede der Umgebungen, für die ich den Code bereitstellen möchte.Wie man Jersey und swagger-ui mit Eigenschaftendatei für das Setzen der URL-Variable einrichtet?

Zum Beispiel sieht dev.properties wie:

hostUrl=https://dev.foo.net/ 
basePathUrl=/bar/restapi 

Und test.properties sieht aus wie

hostUrl=https://test.foo.net/ 
basePathUrl=/bar/restapi 

ich Frühling Bohnen dann Prahlerei für jede Umgebung konfigurieren:

<bean id="beanConfig" class="io.swagger.jaxrs.config.BeanConfig"> 
    <property name="title" value="Swagger App"/> 
    <property name="version" value="1.0.0" /> 
    <property name="schemes" value="http" /> 
    <property name="host" value="#{envSpecificProperties.hostUrl}" /> 
    <property name="basePath" value="#{envSpecificProperties.basePathUrl}"/> 
    <property name="resourcePackage" value="com.foo.bar.rest"/> 
    <property name="scan" value="true"/> 
</bean> 

<context:property-placeholder 
    properties-ref="envSpecificProperties" /> 
<util:properties id="envSpecificProperties" 
    location="WEB-INF/classes/file-#{xjpEnvironment.domain}.properties" /> 
<xjp:environment /> 

Meine Frage ist, wie kann ich die gleichen Eigenschaften Dateien für die Einrichtung von 0 verwendenin index.html so dass swagger-ui muss nicht hart wie dieses und

<script type="text/javascript"> 
$(function() {  
    var url = window.location.search.match(/url=([^&]+)/); 
    if (url && url.length > 1) { 
    url = decodeURIComponent(url[1]); 
    } else { 
    url = "http://localhost:8080/foo/bar/restapi/swagger.json"; 
    } 

codiert werden kann stattdessen dynamisch mit den Eigenschaften von Dateien in irgendeiner Weise wie eingestellt werden:

<script type="text/javascript"> 
$(function() {  
    var url = window.location.search.match(/url=([^&]+)/); 
    if (url && url.length > 1) { 
    url = decodeURIComponent(url[1]); 
    } else { 
    url = "#{beanConfig.host}" + "#{beanConfig.basePath}" + "swagger.json"; 
    } 

Bitte lassen Sie mich wissen, ob dies ist möglich mit Maven Swagger Trikot und Frühling.

Danke!

Antwort

2

Sie können ein Bootstrap-Servlet hinzufügen und die Bean-Konfiguration dort festlegen, indem Sie Werte aus Ihrer Eigenschaftendatei verwenden.

Weitere Informationen finden Sie unter: https://github.com/swagger-api/swagger-core/wiki/Swagger-Core-Jersey-2.X-Project-Setup-1.5 und Setting the Api Version with Swagger UI

Um die Werte in index.html dynamisch festzulegen, verwenden Funktionen JavaScript, um die URL zu bilden. Etwas wie folgt aus:

url = "http://" + window.location.host + window.location.pathname + "api/swagger.json"; 
+1

Dies führte mich zu 'url = window.location.protocol + "//" + window.location.host + "/" + window.location.pathname.split (‘/') [1] + "/" + "api/swagger.json"; ' Was scheint zu funktionieren. Vielen Dank! – user2719805

Verwandte Themen