2017-10-02 34 views
7

के साथ स्वैगर को कॉन्फ़िगर करते समय एक अप्रत्याशित परिणाम प्राप्त करना मैं स्वैगर के लिए बहुत नया हूं और मैंने अपनी वेब सेवा को बहुत सरल दस्तावेज करना शुरू किया है जिसे मैंने स्प्रिंग बूट का उपयोग करके बनाया है।स्प्रिंग बूट

समस्या यह है, मैं अकड़ कॉन्फ़िगर करते हैं, ब्राउज़र में जब मैं स्थानीय होस्ट लिखने के बाद:। 8080/अकड़-ui.html मैं कुछ अजीब पॉपअप संदेश है कि "कहते आधार यूआरएल का अनुमान लगा पाने में असमर्थ के साथ इस निम्न स्क्रीन यह गतिशील सर्वलेट पंजीकरण का उपयोग करते समय या जब API एपीआई गेटवे के पीछे होता है तो आम है "।
मुझे पता है कि यह दोहराया सवाल प्रतीत हो सकता है, लेकिन मैं इसे दिए गए सभी उत्तरों के साथ बिल्कुल हल नहीं कर सका। इसके बाद, मैंने स्क्रीनशॉट पोस्ट किया है और पूरा कोड जहां मैंने गलत नहीं किया था। अगर मैं गलत हो गया तो कृपया मुझे समझें।

स्क्रीन शॉट: enter image description here

कोड
SwaggerConfig.java

package com.test.config; 

import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.Configuration; 
import springfox.documentation.spi.DocumentationType; 
import springfox.documentation.spring.web.plugins.Docket; 
import springfox.documentation.swagger2.annotations.EnableSwagger2; 
import static springfox.documentation.builders.PathSelectors.regex; 

@Configuration 
@EnableSwagger2 
public class SwaggerConfig { 
    @Bean 
    public Docket productApi() { 
     return new Docket(DocumentationType.SWAGGER_2) 
       .select() 
       .paths(regex("/greet.*")) 
       .build(); 
    } 
} 

TestApplication.java

package com.test.config; 

import org.springframework.boot.SpringApplication; 
import org.springframework.boot.autoconfigure.SpringBootApplication; 
import org.springframework.context.annotation.ComponentScan; 

@SpringBootApplication 
@ComponentScan(basePackages="com.test.controllers") 
public class TestApplication { 

    public static void main(String[] args) { 
     SpringApplication.run(TestApplication.class, args); 
    } 
} 

TestController.java

import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RestController; 

@RestController 
@RequestMapping("/greet") 
public class TestController { 

    @RequestMapping 
     public String getGreeting() { 
     return "Hello There"; 
    } 
} 

ऊपर कोड दोनों SwaggerConfig.java और TestApplication.java यानी com.test.config और TestController.java एक ही पैकेज के अंतर्गत आता है में com.test.controllers के अंतर्गत आता है

यह सब कोड मैंने और pom.xml में मैं दो निम्नलिखित निर्भरता है

<dependency> 
     <groupId>io.springfox</groupId> 
     <artifactId>springfox-swagger-ui</artifactId> 
     <version>2.6.1</version> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>io.springfox</groupId> 
     <artifactId>springfox-swagger2</artifactId> 
     <version>2.6.1</version> 
     <scope>compile</scope> 
    </dependency> 
+0

यह मेरे लिए काम करता SpringBoot सुरक्षा में निम्नलिखित कार्य करने होंगे। कभी-कभी जब आप कुछ ब्राउज़र एक्सटेंशन चालू करते हैं तो ये चीजें पॉप अप होती हैं। गुप्त विंडो या किसी अन्य ब्राउज़र के साथ प्रयास करें – Barath

+0

मोज़िला जैसे कुछ ब्राउज़रों में, कोई अलर्ट स्क्रीन प्रदर्शित नहीं हो रही है, लेकिन अभी भी दस्तावेज़ीकरण बिल्कुल दिखाई नहीं दे रहा है। TestController में, GetGreeting() विधि के लिए, एक दस्तावेज़ सही दिखाई दे सकता है? –

+0

@ बाराथ क्या आप वाकई दस्तावेज़ देख सकते हैं? –

उत्तर

0

हम्म, .apis (RequestHandlerSelectors.basePackage ("पैकेज जहां आपका नियंत्रक com.demo.example.controller है) को बदलने के लिए प्रयास करें)। Build(); इसे एक शॉट दें और यदि यह काम नहीं करता है तो कृपया मुझे बताएं।

+0

ने भी कोशिश की, लेकिन यह काम नहीं किया –

+0

वसंत बूट आपको कोई त्रुटि दे रहा है? – SkiiNet

+0

नहीं बस ब्राउज़र में, मैं प्रलेखन को देखने में सक्षम नहीं हूं। इस यूआरएल के लिए "http: // localhost: 8080/swagger-ui.html", यह सिर्फ पॉपअप को प्रदर्शित कर रहा है क्योंकि यह वास्तव में स्क्रीन शॉट में दिखा रहा है जिसे मैंने प्रश्न में निर्दिष्ट किया है। –

2

मैंने इसे एप्लिकेशन क्लास पर एनोटेशन @ EnableSwagger2 जोड़ने का हल किया।

@SpringBootApplication 
@EnableSwagger2 //this 
public class Application { 

    public static void main(String[] args) { 
     SpringApplication.run(Application.class, args); 
    } 

} 
+1

धन्यवाद होना चाहिए! यह काम करता हैं। एडब्ल्यूएस ईसी 2 पर तैनात करते समय मुझे एक ही समस्या थी – deviant

4

मुझे युद्ध कलाकृति के रूप में स्प्रिंग-बूट एप्लिकेशन को तैनात करते समय एक ही समस्या का सामना करना पड़ रहा था। एम्बेडेड टॉमकैट (एक स्टैंडअलोन स्प्रिंग-बूट ऐप के रूप में) के साथ एप्लिकेशन चलाते समय यह ठीक काम कर रहा था, जबकि उपरोक्त मुद्दे का सामना करने वाले दूरस्थ टोमकैट में युद्ध फ़ाइल को तैनात करते समय।

चारों ओर खुदाई करने पर, मैंने पाया कि युद्ध के संग्रह के लिए मेरे आवेदन के लिए मैं सर्वलेट प्रारंभकर्ता खो रहा था।

मेरे लिए एक आकर्षण की तरह काम किया।

import org.springframework.boot.builder.SpringApplicationBuilder; 
import org.springframework.boot.web.support.SpringBootServletInitializer; 

public class ServletInitializer extends SpringBootServletInitializer { 

    @Override 
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application){ 
    return application.sources(TestApplication.class); 
    } 
} 
0

अगर स्वैगर किसी भी प्रमाणन के पीछे है, तो आप

http.authorizeRequests().antMatchers("/swagger-resources/**").permitAll().anyRequest().fullyAuthenticated(); 

तो फिर तुम तक पहुँचने के Swagger UI Documentation