2016-02-01 14 views
5

के बिना स्वैगर स्थैतिक सामग्री को सही ढंग से प्रस्तुत करें Grizzly/Jersey का उपयोग करने के लिए मैंने swagger-ui होस्ट करने के लिए क्या किया है, जो स्थैतिक सामग्री है।जर्सी 2: स्लैश (/)

यहाँ build.gradle का हिस्सा है:

compile 'org.glassfish.jersey.core:jersey-server:2.22.1' 
compile 'org.glassfish.jersey.containers:jersey-container-grizzly2-http:2.22.1' 
compile 'org.glassfish.jersey.containers:jersey-container-grizzly2-servlet:2.22.1' 

यहाँ Grizzly साथ स्थैतिक सामग्री को कॉन्फ़िगर करने का तरीका देखें:

httpServer = GrizzlyWebContainerFactory.create(uri); 
httpServer.getServerConfiguration().addHttpHandler(new StaticHttpHandler("swagger-ui"), "/swagger"); 

swagger-ui परियोजना रूट फ़ोल्डर के अंतर्गत फ़ोल्डर है। enter image description here

मैं सोच रहा हूँ क्या करना है: जब मैं http://localhost/swagger/ का उपयोग लेकिन जब मैं http://localhost/swagger कोशिश, यह केवल एक साधारण पृष्ठ प्रतिपादन के बिना जो सभी सीएसएस/जे एस फ़ाइलें अनुपलब्ध हैं लगता है देता है,

सब कुछ ठीक है स्लैश (/) पीछे पीछे बिना स्लैश वाले लोगों के समान यूआरएल बनाने का सबसे अच्छा तरीका है।

अद्यतन: मैं अकड़-ui के लिए एक टिकट बढ़ा दिया है: https://github.com/swagger-api/swagger-ui/issues/1966 लेकिन यह कहा कि यह तो Grizzly के लिए एक और टिकट Grizzly के साथ एक विन्यास समस्या है: https://java.net/jira/browse/GRIZZLY-1823

कोई समाधान अब मिल गया। मैं एक और वेब सर्वर का उपयोग करने के बारे में सोच रहा हूँ।

+0

इस पर कोई अद्यतन? – Charlie

+2

को ग्रिज़ली 2.3.25 – alexey

उत्तर

0

मुझे लगता है कि इस बात की पुष्टि कर सकते हैं (जैसा कि एलेक्सी द्वारा टिप्पणी की) इस के बाद से ग्रिजली का नवीनतम संस्करण में तय किया गया है।

आप अपने pom.xml को यह जोड़ सकते हैं या तो या संस्करण संख्या

<dependency> 
    <groupId>org.glassfish.grizzly</groupId> 
    <artifactId>grizzly-http-server</artifactId> 
    <version>2.3.28</version> 
</dependency> 

अद्यतन और ग्रिजली स्वचालित रूप से एक 301 स्लैश बिना यूआरएल रीडायरेक्ट, स्लैश के साथ एक के लिए वापस आ जाएगी।

0

मेरा मानना ​​है कि आप या तो HTML फ़ाइल अकड़-ui.html करने के लिए नक्शे या जार आप इस html server grizzly+jersey (.html from .jar archive)

अद्यतन की कोशिश कर सकते सेवा करना चाहते हैं:

मुद्दा ग्रिजली मार्ग के साथ है। जैसे यदि आप अपने ब्राउज़र त्रुटि लॉग की जांच करते हैं तो आप देखेंगे कि यह http://localhost:18888/css/typography.css से http://localhost:18888/swagger/css/typography.css से लोड करने का प्रयास कर रहा है।

मुझे कोई जानकारी नहीं मिली कि ग्रिज़ली कैसे रूटिंग करता है और यह असंगत प्रतीत होता है। जैसे http://localhost/swagger index.html ठीक लोड करता है, लेकिन swagger-ui.js नहीं जो दोनों एक ही पथ पर हैं। मैंने स्थिर फाइलों की सेवा के लिए Nginx जैसे अन्य सर्वरों का उपयोग किया है और हमारे पास कोई समस्या नहीं है।

एक वर्कअराउंड प्रत्येक swagger-UI फ़ोल्डर को अलग से मैप करना है या this का उपयोग करके आप एक ही जार के रूप में स्वैगर को तैनात कर सकते हैं जैसा कि मैंने पहले ही टिप्पणियों में कहा था। मैंने here पर चर्चा के रूप में वाइल्डकार्ड का उपयोग करने पर भी ध्यान दिया, लेकिन कोई भाग्य नहीं था।

httpServer.getServerConfiguration().addHttpHandler(new StaticHttpHandler("<basepath>/lib"),"/lib"); 
    httpServer.getServerConfiguration().addHttpHandler(new StaticHttpHandler("<basepath>/css"),"/css"); 
... 
+0

में तय किया जाएगा, क्या आप HTML फ़ाइल swagger-ui.html पर मैप करने का तरीका बता सकते हैं? – DerekY

+0

क्या आप गतिशील रूप से जेनरेट किए गए स्वैगर दस्तावेज़ भी होस्ट कर रहे हैं? उदाहरण के लिए हम अपने डॉक्स और जो की मेजबानी के लिए अकड़ UI देखने http://springfox.github.io/springfox/docs/snapshot/ – Charlie

+0

हाँ, मैं इस्तेमाल करेंगे को विन्यस्त वेब सर्वर का ख्याल रखता है अकड़ ui Springfox का उपयोग कर 'अकड़ की मेजबानी 'मेरे आराम से एपीआई निर्यात करने के लिए। लेकिन 'swagger ui' के लिए, मैं सिर्फ guihub – DerekY