SpringBoot 통합 Swagger api 문서 구축 작업
8818 단어 SpringBootSwaggerapi
Swagger 는 무엇 입 니까:THE WORLD'S MOST POPULAR API TOOLING
홈 페이지 에 따 르 면
Swagger Inspector:API 테스트 와 OpenAPI 생 성 을 위 한 개발 도구 입 니 다.Swagger Inspector 의 구축 은 개발 자의 세 가지 주요 목 표를 해결 하기 위 한 것 입 니 다.
1.간단 한 API 테스트 수행
2.OpenAPI 문서 생 성
3.새로운 API 기능 탐색
Swagger 는 RESTful 스타일 의 웹 서 비 스 를 생 성,설명,호출,시각 화 하 는 규범 적 이 고 완전한 프레임 워 크 라 는 것 을 이해 합 니 다.쉽게 말 하면 Swagger 는 기능 이 강 한 인터페이스 관리 도구 이 고 다양한 프로 그래 밍 언어의 앞 뒤 분리 솔 루 션 을 제공 합 니 다.제 사용 에 따 르 면 물론 저 는 가장 간단 한 사용 일 뿐 입 니 다.저 는 Swagger 가 다음 과 같은 몇 가지 장점 이 있다 고 생각 합 니 다.
1.Swagger 는 코드 에 통합 하여 개발 할 때 주석 을 통 해 주석 을 작성 하고 API 문 서 를 자동 으로 생 성 할 수 있 습 니 다.
2.프론트 백 엔 드 를 분리 하여 지나치게 의존 하지 않 습 니 다.
3.화면 이 뚜렷 하고 editor 의 실시 간 전시 든 ui 의 전시 든 모두 인성 화 되 어 있 습 니 다.만약 에 자신 이 markdown 으로 만 작성 하면 어떻게 표현 해 야 할 지 고민 하고 고 통 스 럽 습 니 다.
다음 두 가 지 를 나 는 아직 실천 하지 않 았 다.
1.JSon 과 Yml 를 지원 하여 API 문 서 를 작성 하고 json,Yml,markdown 등 형식 으로 내 보 낼 수 있 습 니 다.
2.API 를 작성 하면 해당 SDK 를 자동 으로 생 성 할 수 있 습 니 다.맞습니다.API 인터페이스 코드 가 아직 쓰기 시작 하지 않 았 을 수도 있 습 니 다.해당 SDK 를 만 들 수 있 고 거의 모든 주류 프로 그래 밍 언어 를 지원 하 는 SDK 를 만 들 수 있 습 니 다.
SpringBoot,Maven SwaggerAPI 문서 구축
첫 번 째 단계:SpringBoot 웹 프로젝트 만 들 기
여기 서 소 개 를 많이 할 뿐 발생 할 수 있 는 문제 만 말씀 드 리 겠 습 니 다.프로젝트 를 만 든 후에 디 렉 터 리 구조 가 잘못 되 었 고 src/main/resources 폴 더 만 있 습 니 다.아래 그림 에서 보 듯 이
이때 JDK 버 전 을 설치 한 버 전 으로 업그레이드 하면 다른 폴 더 가 나타 납 니 다.
두 번 째 단계:클래스 생 성 및 pom.xml 설정
1:pom.xml 설정,의존 패키지 추가:
첫 번 째 는 API 가 가 져 온 가방 이 고,두 번 째 는 공식 적 으로 제 시 된 ui 인터페이스 입 니 다.3 과 4 는 spring boot 에 필요 한 jar 가방 입 니 다.
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.6.1</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.6.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
2:Swagger 설정,SwaggerConfig.java 클래스 만 들 기
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com"))
.paths(PathSelectors.any()).build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("Spring Boot Swagger2 RESTful APIs")
.description("myapp")
.termsOfServiceUrl("http://blog.csdn.net/java_yes")
.version("1.0").build();
}
}
여기 특별히 주의해 야 할 점 이 있 습 니 다.RequestHandler Selectors.basePackage("com.swagger"),주 해 를 스 캔 하 는 설정,즉 API 인터페이스 위치 입 니 다.문장 은 마지막 에 내 가 총 결 할 것 이다.
3:SpringBoot 시작 클래스 만 들 기
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
4:controller 생 성여기 서 controller 두 개 를 만 들 었 습 니 다.@RequestMapping()을 설명 하기 위해 서 입 니 다.이 두 컨트롤 러 는 실제 적 인 의미 가 없어 서 마음대로 만 들 수 있 습 니 다.저 는 단지 SwaggerAPI 를 테스트 하기 위해 서 입 니 다.
GreetingController
@RestController
@RequestMapping(value = "/test")
public class GreetingController {
private static final String template = "Hello, %s!";
private final AtomicLong counter = new AtomicLong();
@RequestMapping(value = "/swagger")
//@RequestMapping("/swagger")
//@RequestMapping(value = "/swagger",method = RequestMethod.POST)
public Greeting greeting(@RequestParam(value = "name", defaultValue = "World") String name) {
return new Greeting(counter.incrementAndGet(), String.format(template, name));
}
}
BookController
@RestController
@Api(tags = "BookController", description = "BookController | swagger")
@RequestMapping(value = "/books")
public class BookController {
Map<Long, Book> books = Collections.synchronizedMap(new HashMap<Long, Book>());
@ApiOperation(value=" ", notes=" ")
@ApiImplicitParam(name = "book", value = " ", required = true, dataType = "Book")
@RequestMapping(value="", method=RequestMethod.POST)
public String postBook(@RequestBody Book book) {
books.put(book.getId(), book);
return "success";
}
@ApiOperation(value = " ", notes = " url id ")
@ApiImplicitParam(name = "id", value = "ID", required = true, dataType = "Long", paramType = "path")
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
public Book getBook(@PathVariable Long id) {
return books.get(id);
}
}
5:SpringBoot 시작 클래스 만 들 기:
@SpringBootApplication
@ComponentScan(basePackages={"com"})
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
STEP 3:Swagger 시작OK,여기까지 입 니 다.모든 Swagger 를 설정 하 였 습 니 다.이 때 방문http://localhost:8080/swagger-ui.html#/greeting-controller。Swagger-UI 를 볼 수 있 습 니 다.아래 그림 과 같다.
마찬가지 로@RequestMapping()의 경로 에 따라 접근 할 수 있 고 API 에서 테스트 할 수 있 습 니 다.여기 서 제 가 시범 을 보 여 드 리 겠 습 니 다.
구덩이!!!!내 가 설정 하 는 과정 에서 발생 한 오류;
제 파일 구 조 를 먼저 보 내 드 리 겠 습 니 다.
1:모든 것 이 설정 되 어 있 지만 API 는 아무것도 표시 되 지 않 습 니 다.그림 에서 보 듯 이:
이것 이 바로 내 가 위 에서 말 한 문제 이다.RequestHandler Selectors.basePackage("com.swagger")
이 곳 은 swagger 가 불 러 올 인터페이스 가 있 는 가방 이름 을 설정 합 니 다.이 가방 에 있 는 모든 컨트롤 러 를 스 캔 하 러 갑 니 다.여러분,제 파일 구 조 를 보 세 요.
RequestHandler Selectors.basePackage("com")를 설정 하면 com.swagger 를 포함 한 모든 com 패키지 의 컨트롤 러 를 스 캔 합 니 다.그리고 com.controller.효 과 는 이렇다.
RequestHandlerSelectors.basePackage("com.swagger")나 RequestHandlerSelectors.basePackage("com.swagger")만 따로 설정 하면 됩 니 다.그럼 하나 나 와 요.
2:RequestHandler Selectors.basePackage("com")를 설 정 했 지만 API 는 하나만 표시 되 고 Controller 가 직접 접근 하 는 주 소 를 표시 하지 않 아 도 오류 가 발생 했 습 니 다.그림 참조:
이 럴 때 는 스프링 부츠 가 문제 일 수도 있어 요.그 는 결코 너의 다른 controller 에 불 러 오지 않 았 다.
SpringBoot 시작 클래스 와 Controller 클래스 는 같은 가방 에 있어 야 합 니 다.contrller 는 부모 클래스 에 있어 야 합 니 다.
이때 두 가지 해결 방안 이 있다.
1.불 러 오지 않 은 Conrtoller 류 를 SpringBoot 시작 클래스 가 있 는 가방 으로 이동 합 니 다.또는 가방 이름 을 시작 클래스 의 하위 가방 으로 바 꿉 니 다.
2.상기 코드 와 같이 시작 클래스 에 설명 을 추가 합 니 다:@Componentscan(basePackages={"com"}).이 설명 은 모든 com 패키지 의 controller 를 스 캔 하고 불 러 옵 니 다.
왜 나 는 Greeting Controller 에 rest 방법 을 쓰 지 않 았 습 니까?근 데 API 에 다 나 오 는데?
이것 은@RequestMapping()을 사용 해 야 합 니 다.해명 했다.
1.@RequestMapping(value="/swagger")또는@RequestMapping("/swagger")이 이렇게 쓸 때 모든 method 를 불 러 옵 니 다.
2.@RequestMapping(value="/swagger",method=RequestMethod.POST)은 mathod 를 설정 할 때 설정 한 method 만 생 성 합 니 다.
이상 의 SpringBoot 통합 Swagger 가 api 문 서 를 구축 하 는 작업 은 바로 작은 편집 이 여러분 에 게 공유 하 는 모든 내용 입 니 다.참고 가 되 고 저 희 를 많이 사랑 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.