SpringBoot 통합 swagger-ui 및 swagger 그룹 디 스 플레이 동작
9691 단어 SpringBootswagger-uiswagger
1.swagger 설정 클래스
첫 번 째 단 계 는 pom 에 해당 하 는 설정 을 도입 해 야 합 니 다.여 기 는 2.7.0 버 전 을 사용 합 니 다.주의해 야 할 것 은 2.7.0 과 2.8.0 의 버 전 은 인터페이스 스타일 에 있어 차이 가 매우 크다 는 것 이다.관심 이 있 으 면 2.8.0 이상 의 버 전 을 사용 해 보 자.나 는 2.7.0 과 이하 의 버 전 을 비교적 선 호한 다.왜냐하면 화면 이 비교적 상쾌 하기 때문이다.
첫 번 째 pom 도입
<!--swagger-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.7.0</version>
</dependency>
두 번 째 단계코드 에 해당 하 는 설정 을 추가 합 니 다.새 config 패 키 지 를 만 들 고 swaggerConfig 설정 류 를 기록 합 니 다.
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration
@EnableSwagger2
public class SwaggerConfig {
/**
* API
* apiInfo() API
* select() ApiSelectorBuilder , Swagger ,
* API 。
*
* @return
*/
@Bean
public Docket restApi() {
return new Docket(DocumentationType.SWAGGER_2)
.groupName(" ")
.apiInfo(apiInfo("Spring Boot Swagger2 RESTful APIs", "1.0"))
.useDefaultResponseMessages(true)
.forCodeGeneration(false)
.select()
.apis(RequestHandlerSelectors.basePackage("com.xqnode.learning.controller"))
.paths(PathSelectors.any())
.build();
}
/**
* API ( )
* :http://ip:port/swagger-ui.html
*
* @return
*/
private ApiInfo apiInfo(String title, String version) {
return new ApiInfoBuilder()
.title(title)
.description(" : https://jb51.net")
.termsOfServiceUrl("https://jb51.net")
.contact(new Contact("xqnode", "https://jb51.net", "[email protected]"))
.version(version)
.build();
}
}
.apis(RequestHandler Selectors.basePackage("com.xqnode.learning.controller")이 설정 은 인터페이스 층 의 위 치 를 지정 하 는 데 사 용 됩 니 다.프로젝트 의 실제 상황 에 따라 수정 할 수 있 습 니 다.api Info()는 우리 프로젝트 의 설명 정 보 를 정의 하 는 것 으로 실제 수요 에 따라 매개 변수 에서 수정 할 수 있 습 니 다.주의해 야 할 것 은 설정 클래스 의 머리 에@Configuration,성명 설정 클래스,@Enableswagger 2 에 swagger 를 불 러 오 는 관련 설정 을 추가 해 야 합 니 다.2.swagger 사용
우 리 는 방금 지정 한 인터페이스 층 에서 swagger 를 사용 하여 인터페이스의 사용 방법 을 설명 했다.
import com.fasterxml.jackson.databind.ObjectMapper;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.io.IOException;
import java.util.Map;
@RestController
@RequestMapping("/api")
@Api(tags = " ")
public class ApiController {
@Resource
private ObjectMapper mapper;
@PostMapping("/ps")
@ApiOperation(value = " json ", notes = " json ")
public String post(@ApiParam(name = " json ", defaultValue = "{}")
@RequestBody String json) throws IOException {
Map map = mapper.readValue(json, Map.class);
System.out.println(map);
return json;
}
}
그리고 프로젝트 를 시작 해서 열 겠 습 니 다.http://ip:port/swagger-ui.html:인 자 를 입력 하지 않 고 try it out 을 누 르 십시오!단추:
페이지 에서 우 리 는 인터페이스의 머리 에 지정 한 인터페이스 클래스 설명(@Api)과 인터페이스 방법 에 지정 한 방법 설명(@Api Operation)을 볼 수 있 습 니 다.인터페이스 매개 변수 에 지정 한 매개 변수 설명(@Apiparam)이 모두 효력 이 발생 했 습 니 다.이것 은 모두 swagger 를 바탕 으로 이 루어 진 것 입 니 다.그러나 주의해 야 할 것 은 swagger 는 인터페이스의 설명 정 보 를 제공 할 수 밖 에 없습니다.
3.추가 학습 경험
제 가 swagger 를 사용 할 때 필요 한 것 이 이 렇 습 니 다.저 는 두 개의 인터페이스 층 에서 모두 swagger 를 사용 해 야 합 니 다.두 개의 인터페이스 층 의 api 를 그룹 으로 나 누 어 보 여 드릴 것 입 니 다.예 를 들 어 아래 두 개의 인터페이스 층:
프로젝트 를 시작 한 후 swagger 페이지 를 방 문 했 는데 이상 한 문제 가 있 습 니 다.바로 other 층 의 인터페이스 가 보이 지 않 습 니 다.
내 가 설정 클래스 에서 지정 한 인터페이스 층 위치 가 swagger api 의 표시 에 영향 을 미 쳤 기 때 문 이 라 고 추측 합 니 다.그래서 바 이 두 는 해결 방안 을 찾 았 습 니 다.인터페이스 층 의 위 치 를 지정 하지 않 고 주 해 를 지정 한@RestController 입 니 다.
@Bean
public Docket restApi() {
return new Docket(DocumentationType.SWAGGER_2)
.groupName("standard")
.apiInfo(apiInfo("Spring Boot Swagger2 RESTful APIs", "1.0"))
.useDefaultResponseMessages(true)
.forCodeGeneration(false)
.select()
// .apis(RequestHandlerSelectors.basePackage("com.xqnode.learning.controller"))
.apis(RequestHandlerSelectors.withClassAnnotation(RestController.class))
.paths(PathSelectors.any())
.build();
}
swagger 인터페이스 에 다른 인터페이스의 api 가 나 타 났 습 니 다:하지만 이런 효 과 는 좋 지 않다.우리 가 왜 인터페이스 에 층 을 나 누 어야 하 는 지 생각해 보 세 요.업 무 를 격 리 시 키 기 위해 서 아 닙 니까?이렇게 한 인터페이스 에 두 개의 인터페이스 층 의 api 가 나타 나 면 우리 가 인 터 페 이 스 를 찾 는 데 매우 불편 하고 우리 가 인터페이스 층 을 나 누 는 목적 도 어 지 럽 혔 습 니 다.그렇다면 이 를 어떻게 격 리 시 킬 수 있 을 까?
사실은 매우 간단 합 니 다.우 리 는 Docket 의 bean 을 다시 정의 하고 그 중에서 다른 인터페이스 층 의 위 치 를 지정 하면 됩 니 다.
@Bean
public Docket restApi2() {
return new Docket(DocumentationType.SWAGGER_2)
.groupName(" ")
.apiInfo(apiInfo("Other APIs", "2.0"))
.select()
.apis(RequestHandlerSelectors.basePackage("com.xqnode.learning.other"))
.paths(PathSelectors.regex("/other.*"))
.build();
}
우 리 는 여기에서 두 번 째 인터페이스 층 의 위 치 를 지정 하고 경로 접 두 사 를 지정 했다.그러면 우 리 는 swagger 페이지 에서 그 안의 인 터 페 이 스 를 쉽게 찾 을 수 있다.인터페이스 층 1:표준 인터페이스
인터페이스 층 2:기타 인터페이스
이제 우 리 는 그룹 전환 을 통 해 우리 가 주목 하 는 인터페이스 층 의 api 를 찾 을 수 있 습 니 다.
다음 에 완전한 설정 클래스 를 붙 입 니 다:
@Configuration
@EnableSwagger2
public class SwaggerConfig {
/**
* API
* apiInfo() API
* select() ApiSelectorBuilder , Swagger ,
* API 。
*
* @return
*/
@Bean
public Docket restApi() {
return new Docket(DocumentationType.SWAGGER_2)
.groupName("standard")
.apiInfo(apiInfo("Spring Boot Swagger2 RESTful APIs", "1.0"))
.useDefaultResponseMessages(true)
.forCodeGeneration(false)
.select()
.apis(RequestHandlerSelectors.basePackage("com.xqnode.learning.controller"))
// .apis(RequestHandlerSelectors.withClassAnnotation(RestController.class))
.paths(PathSelectors.regex("/api.*"))
.build();
}
@Bean
public Docket restApi2() {
return new Docket(DocumentationType.SWAGGER_2)
.groupName(" ")
.apiInfo(apiInfo("Other APIs", "2.0"))
.select()
.apis(RequestHandlerSelectors.basePackage("com.xqnode.learning.other"))
.paths(PathSelectors.regex("/other.*"))
.build();
}
/**
* API ( )
* :http://ip:port/swagger-ui.html
*
* @return
*/
private ApiInfo apiInfo(String title, String version) {
return new ApiInfoBuilder()
.title(title)
.description(" : https://jb51.net")
.termsOfServiceUrl("https://jb51.net")
.contact(new Contact("xqnode", "https://jb51.net", "[email protected]"))
.version(version)
.build();
}
}
이로써 springboot 통합 swagger 2 가 완성 되 었 고 한 가지 식 사 를 추가 하 였 습 니 다.만족 하 시 죠?하하.이상 의 SpringBoot 통합 swagger-ui 및 swagger 그룹 디 스 플레이 작업 은 바로 작은 편집 이 여러분 에 게 공유 하 는 모든 내용 입 니 다.참고 하 시기 바 랍 니 다.여러분 들 도 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Java・SpringBoot・Thymeleaf】 에러 메세지를 구현(SpringBoot 어플리케이션 실천편 3)로그인하여 사용자 목록을 표시하는 응용 프로그램을 만들고, Spring에서의 개발에 대해 공부하겠습니다 🌟 마지막 데이터 바인딩에 계속 바인딩 실패 시 오류 메시지를 구현합니다. 마지막 기사🌟 src/main/res...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.