티스토리 뷰

 

스웨거 버젼 3점대가 나왔습니다. 2.9대와는 바뀐점이 있어서 앞으로는 3.대를 쓰게 되지 않을까 싶네요. 저도 앞으로 만드는 프로젝트는 3점대로 쓰려고 해서 이 글을 씁니다.

 

SwaggerConfiguration.java

@Configuration
public class SwaggerConfiguration {
    @Bean
    public Docket api() {
        return new Docket(DocumentationType.OAS_30)
                .select()
                .apis(RequestHandlerSelectors.any())
                .paths(PathSelectors.any())
                .build();
    }
}

 

build.gradle

dependencies {
	// Swagger 3.0.0
	implementation group: 'io.springfox', name: 'springfox-boot-starter', version: '3.0.0'
	implementation group: 'io.springfox', name: 'springfox-swagger-ui', version: '3.0.0'
}

pom.xml

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-boot-starter</artifactId>
    <version>3.0.0</version>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>3.0.0</version>
</dependency>

추가 후 버전 에러 난다면 version특정 해주세요.

<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.4.4</version>
                <configuration>
                    <excludes>
                        <exclude>

 

 

에러가 나는 경우 아래와 같이 설정 해주세요. SpringBoot 2.5.x이상 버전에서는 나는 것 같습니다.

application.yml

spring:
  mvc:
    pathmatch:
      matching-strategy: ant_path_matcher

 

접속 방법

http://localhost:8080/swagger-ui/

 

설정이 잘 되었으면 아래와 같이 나옵니다.

 

basic-error-controller안나오게 하기

아래와 같이 RequestHandlerSelectors.basePackage()를 설정 해주면 안나옵니다.

@Bean
public Docket api() {
    return new Docket(DocumentationType.OAS_30)
            .securityContexts(Arrays.asList(securityContext()))
            .securitySchemes(Arrays.asList(apiKey()))
            .select()
            .apis(RequestHandlerSelectors.basePackage("com.example.demo"))
            .paths(PathSelectors.any())
            .build();
}

결과

 

Annotation들

API의 이름을 바꿀 수 있습니다.

@Api(tags = {"Post Controller"})
public class PostRestController {

결과

 

해당 api를 노출 안하게 할 수 있습니다.

@ApiIgnore
public class HelloController {

Controller에 설명을 붙일 수 있습니다.

@ApiOperation(value = "게시글 작성기능",notes = "로그인 한 사용자가 title,body 값으로 게시글 작성")
    @PostMapping
    public Response<PostResponse> addPost(@ApiIgnore Authentication authentication, @RequestBody PostRequest postRequest){
        log.info("게시글 작성 컨트롤러");
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함