Spring Boot 는 Swagger 를 사용 하여 RestAPI 인터페이스 문 서 를 구축 합 니 다.
현재 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 에 관 한 자 료 는 다른 관련 글 을 주목 하 십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[MeU] Hashtag 기능 개발➡️ 기존 Tag 테이블에 존재하지 않는 해시태그라면 Tag , tagPostMapping 테이블에 모두 추가 ➡️ 기존에 존재하는 해시태그라면, tagPostMapping 테이블에만 추가 이후에 개발할 태그 기반 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.