स्प्रिंगफ़ॉक्स (स्वैगर स्पेस 2.0, करंट)
स्प्रिंगफ़ॉक्स ने स्वैगर- स्प्रिंगएमवीसी की जगह ले ली है, और अब स्वैगर स्पेक्स 1.2 और 2.0 दोनों का समर्थन करता है। कार्यान्वयन कक्षाएं बदल गई हैं, कुछ गहन अनुकूलन की अनुमति देता है, लेकिन कुछ काम के साथ। प्रलेखन में सुधार हुआ है, लेकिन अभी भी कुछ विवरण उन्नत विन्यास के लिए जोड़ा की जरूरत है। 1.2 कार्यान्वयन के लिए पुराना उत्तर अभी भी नीचे पाया जा सकता है।
मावेन निर्भरता
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.5.0</version>
</dependency>
नंगे-न्यूनतम क्रियान्वयन कम-से-कम एक जैसा दिखता है, लेकिन अब Docket
कक्षा के बजाय कक्षा का उपयोग करता है SwaggerSpringMvcPlugin
:
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket api(){
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.regex("/api/.*"))
.build()
.apiInfo(apiInfo());
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("TITLE")
.description("DESCRIPTION")
.version("VERSION")
.termsOfServiceUrl("http://terms-of-services.url")
.license("LICENSE")
.licenseUrl("http://url-to-license.com")
.build();
}
}
अब आपका स्वैगर 2.0 एपीआई प्रलेखन उपलब्ध होगा http://myapp/v2/api-docs
।
नोट: यदि आप स्प्रिंग बूट का उपयोग नहीं कर रहे हैं, तो आपको जैकसन-डेटाबाइंड निर्भरता को जोड़ना चाहिए। चूंकि स्प्रिंगबॉट डेटाबाइंडिंग के लिए जैकसन का उपयोग करता है।
स्वैगर UI समर्थन जोड़ना अब और भी आसान है। यदि आप मावेन का उपयोग कर रहे हैं, तो स्वैगर यूआई वेबर के लिए निम्न निर्भरता जोड़ें:
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.5.0</version>
</dependency>
यदि आप स्प्रिंग बूट का उपयोग कर रहे हैं, तो आपके वेब ऐप को स्वचालित रूप से आवश्यक फ़ाइलों को चुनना चाहिए और यूआई को http://myapp/swagger-ui.html
(पूर्व में:) दिखाना चाहिए http://myapp/springfox
। यदि आप स्प्रिंग बूट का उपयोग नहीं कर रहे हैं, तो नीचे दिए गए उत्तर में yuriy-tumakha का उल्लेख है, तो आपको फ़ाइलों के लिए संसाधन हैंडलर को पंजीकृत करना होगा। जावा कॉन्फ़िगरेशन इस तरह दिखता है:
@Configuration
@EnableWebMvc
public class WebAppConfig extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
}
}
नया स्टैटिक डॉक्यूमेंटेशन जनरेशन फीचर भी काफी अच्छा लगता है, हालाँकि मैंने इसे खुद नहीं आजमाया है।
स्वैगर-स्प्रिंगएमवीसी (स्वैगर कल्पना 1.2, पुराना)
स्वैगर-स्प्रिंगएमवीसी के लिए प्रलेखन थोड़ा भ्रमित हो सकता है, लेकिन इसे स्थापित करना वास्तव में अविश्वसनीय रूप से आसान है। सबसे सरल कॉन्फ़िगरेशन के लिए SpringSwaggerConfig
बीन बनाने और एनोटेशन-आधारित कॉन्फ़िगरेशन को सक्षम करने की आवश्यकता होती है (जो आप संभवतः अपने स्प्रिंग एमवीसी प्रोजेक्ट में पहले से करते हैं):
<mvc:annotation-driven/>
<bean class="com.mangofactory.swagger.configuration.SpringSwaggerConfig" />
हालाँकि, मुझे लगता है SwaggerSpringMvcPlugin
कि पिछले एक्सएमएल-परिभाषित बीन के बजाय, कस्टम स्वैगर कॉन्फ़िगरेशन का उपयोग करके इसे परिभाषित करने के अतिरिक्त कदम उठाने के लिए यह अच्छी तरह से लायक है :
@Configuration
@EnableSwagger
@EnableWebMvc
public class SwaggerConfig {
private SpringSwaggerConfig springSwaggerConfig;
@SuppressWarnings("SpringJavaAutowiringInspection")
@Autowired
public void setSpringSwaggerConfig(SpringSwaggerConfig springSwaggerConfig) {
this.springSwaggerConfig = springSwaggerConfig;
}
@Bean
public SwaggerSpringMvcPlugin customImplementation(){
return new SwaggerSpringMvcPlugin(this.springSwaggerConfig)
.apiInfo(apiInfo())
.includePatterns(".*api.*");
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("TITLE")
.description("DESCRIPTION")
.version("VERSION")
.termsOfServiceUrl("http://terms-of-services.url")
.license("LICENSE")
.licenseUrl("http://url-to-license.com")
.build();
}
}
जब आप अपना एप्लिकेशन चलाते हैं, तो आपको अब अपना API युक्ति बनाना चाहिए http://myapp/api-docs
। फैंसी स्वैगर UI सेट अप करने के लिए, आपको GitHub प्रोजेक्ट से स्थिर फ़ाइलों को क्लोन करना होगा और उन्हें अपने प्रोजेक्ट में डालना होगा। सुनिश्चित करें कि आपकी परियोजना स्थिर HTML फ़ाइलों की सेवा के लिए कॉन्फ़िगर की गई है:
<mvc:resources mapping="*.html" location="/" />
फिर index.html
Swagger UI dist
निर्देशिका के शीर्ष स्तर पर फ़ाइल को संपादित करें । फ़ाइल के शीर्ष पर, आपको कुछ जावास्क्रिप्ट दिखाई देगी api-docs
जो किसी अन्य परियोजना के URL को संदर्भित करती है । अपनी परियोजना के स्वैगर दस्तावेज़ को इंगित करने के लिए इसे संपादित करें:
if (url && url.length > 1) {
url = url[1];
} else {
url = "http://myapp/api-docs";
}
अब जब आप नेविगेट करते हैं http://myapp/path/to/swagger/index.html
, तो आपको अपनी परियोजना के लिए स्वैगर UI उदाहरण देखना चाहिए।