Spring Boot 는 Swagger 를 사용 하여 RestAPI 인터페이스 문 서 를 구축 합 니 다.

원본 주소:https://github.com/laolunsi/spring-boot-examples
현재 SpringBoot 는 자바 웹 애플 리 케 이 션,특히 앞 뒤 분리 프로젝트 를 개발 하 는 데 자주 사용 되 고 있다.우 리 는 전단 개발 자 들 의 의사 소통 을 편리 하 게 하기 위해 SpringBoot 에 Swagger 를 도입 했다.
Swagger 는 인터페이스 에 작용 하여 인터페이스 데 이 터 를 시각 화 시 키 는데 특히 Restful API 에 적합 합 니 다.
이 절 은 두 부분 으로 나 뉘 어 소개 하 는데 첫 번 째 부분 은 SpringBoot 가 Swagger 를 도입 하 는 두 가지 방식 이 고 두 번 째 부분 은 웹 인터페이스 에 Swagger 를 응용 하 는 주 해 를 상세 하 게 소개 한다.
이 글 은 SpringBoot 2.1.10.RELEASE 와 springfox-swagger 2.9.2 를 사용 합 니 다.
1.SpringBoot 가 Swagger 를 도입 하 는 두 가지 방식
현재 SpringBoot 는 Swagger 를 사용 하 는 두 가지 방식 이 있 습 니 다.
swagger 원생 의존 spring fox-swagger 2 와 spring fox-swagger 2-ui 도입
국내 Spring4All 커 뮤 니 티 개발 의존 swagger-spring-boot-starter 도입
Spring4All 제품 의 의존 은 프로필 방식 으로 설정 되 며,원생 의존 은 자바 config 류 를 통 해 설정 되 어 있 습 니 다.
1.1 네 이 티 브 설정 Swagger
maven 의존:

<dependency>
 <groupId>io.springfox</groupId>
 <artifactId>springfox-swagger2</artifactId>
 <version>2.9.2</version>
</dependency>

<dependency>
 <groupId>io.springfox</groupId>
 <artifactId>springfox-swagger-ui</artifactId>
  <version>2.9.2</version>
</dependency>
swagger 설정 클래스:

/**
 * swagger2   
 */
@Configuration
@EnableSwagger2
public class SwaggerConfig {
 @Bean
 public Docket createRestApi() {
  return new Docket(DocumentationType.SWAGGER_2)
    .apiInfo(apiInfo())
    .select()
    .apis(RequestHandlerSelectors.basePackage("com.example"))
    .paths(PathSelectors.any())
    .build();
 }


 private ApiInfo apiInfo() {
  return new ApiInfoBuilder()
    .title("  Swagger   Rest API  ")
    .description("          eknown")
    .contact(new Contact("  ", "http://www.eknown.cn", "[email protected]"))
    .termsOfServiceUrl("http://www.eknown.com")
    .version("1.0")
    .build();
 }
}
여기 서 Swagger 의 단점 을 알 수 있 습 니 다.SpringBoot 의 설정 파일 을 통 해 설정 할 수 없 기 때문에 설정 이 유연 하 게 바 뀌 지 않 습 니 다.
spring4all 커 뮤 니 티 에서 만 든 swagger-spring-boot-starter 는 이 문 제 를 해결 할 수 있 습 니 다.
1.2 spring4all 기반 swagger 설정
Spring4All 커 뮤 니 티 의 블 로 거들 인 DD 와 작은 불 두 사람 이 Spring Boot Starter Swagger 를 개 발 했 고 현재 Maven 공식 창고 에 출시 되 었 습 니 다.

첫 번 째 를 선택 하고 이 의존 도 를 도입 합 니 다:

<dependency>
 <groupId>com.spring4all</groupId>
 <artifactId>swagger-spring-boot-starter</artifactId>
 <version>1.9.0.RELEASE</version>
</dependency>
이러한 방식 의 Swagger 설정 은 application 프로필 을 통 해 이 루어 집 니 다.다음은 예 를 들 어 보 겠 습 니 다.

server:
 port: 8106
swagger:
 base-path: /**
 base-package: 'com.example'
 title: 'spring-boot-swagger-demo'
 description: '  Swagger   SpringBoot RESTApi   '
 version: '1.0'
 contact:
 name: '  '
 url: 'http://www.eknown.cn'
 email: '[email protected]'
2.Swagger 를 응용 하여 인터페이스 시각 화 구축
2.1 컨트롤 러 클래스 에 Swagger 주석 추가
다음은 간단 한 예 시 를 드 리 겠 습 니 다.

@Api(tags = "    ")
@RestController
@RequestMapping(value = "user")
public class UserController {

 //           
 private static Map<Integer, User> userMap;

 static {
  userMap = new ConcurrentHashMap<>();
  User user = new User(0, "admin", true, new Date());
  userMap.put(user.getId(), user);
 }

 @ApiOperation("    ")
 @GetMapping(value = "")
 public List<User> list() {
  return new ArrayList<>(userMap.values());
 }

 @ApiOperation(value = "        ", notes = "    ID")
 @GetMapping(value = "{id}")
 public User detail(@PathVariable Integer id) {
  return userMap.get(id);
 }

 @ApiOperation(value = "         ", notes = "insert update  "
   , response = User.class)
 @PostMapping(value = "")
 public User add(@RequestBody User user) {
  if (user == null || user.getId() == null || !StringUtils.isEmpty(user.getName())
    || userMap.containsKey(user.getId())) {
   return null;
  }

  user.setUpdateTime(new Date());
  userMap.put(user.getId(), user);
  return user;
 }


 @ApiOperation(value = "    ")
 @DeleteMapping(value = "{id}")
 public Boolean delete(@ApiParam(name = "  ID", required = true, example = "100") @PathVariable Integer id) {
  if (userMap.containsKey(id)) {
   userMap.remove(id);
   return true;
  }

  return false;
 }

}
2.2 매개 변수 실체 클래스 에 Swagger 주석 추가
실체 류 도 전단 개발 자 들 이 매개 변수의 의미,유형,예시 등 을 확정 할 수 있 도록 주 해 를 추가 해 야 한다.

@ApiModel(description = "   ")
public class User {

 @ApiModelProperty(value = "ID", example = "100")
 private Integer id;

 @ApiModelProperty(value = "  ", example = "laolunsi")
 private String name;

 @ApiModelProperty(value = "    ", example = "1")
 private Boolean enable;

 @ApiModelProperty("    ")
 private Date updateTime;

 public User(Integer id, String name, Boolean enable, Date updateTime) {
  this.id = id;
  this.name = name;
  this.enable = enable;
  this.updateTime = updateTime;
 }

 // ... ignore getter and setter methods
}
2.3 테스트
시작 항목,접근http://localhost:port/swagger-ui.html
server.servlet.context-path 설정 이 존재 한다 면 접근 주 소 는?http://localhost:port/context-path/swagger-ui.html

이렇게 하면 인 터 페 이 스 는 한눈 에 알 수 있 고 swagger 는 온라인 테스트 인 터 페 이 스 를 지원 하 며 postman 의 역할 과 유사 하 다.
자,지금까지 우 리 는 SpringBoot 프로젝트 에서 Swagger 를 성공 적 으로 통합 시 켰 습 니 다.그러면 전후 단 개발 도 킹 에 기준 이 있 습 니 다!
이상 은 Spring Boot 가 Swagger 를 사용 하여 RestAPI 인터페이스 문 서 를 구축 하 는 상세 한 내용 입 니 다.Spring Boot 통합 Swagger 에 관 한 자 료 는 다른 관련 글 을 주목 하 십시오!

좋은 웹페이지 즐겨찾기