Swagger

ims·2020년 11월 8일
0

BlueDot-Spring

목록 보기
9/13

글의 내용은 대부분 아래 블로그를 참조함

https://victorydntmd.tistory.com/341

dependencies 추가

@Configuration
@EnableSwagger2
public class SwaggerConfig {
    private String version;
    private String title;

    @Bean
    public Docket apiV1() {
        version = "V1";
        title = "API VERSION : " + version;

        return new Docket(DocumentationType.SWAGGER_2)
                .useDefaultResponseMessages(false)
                .groupName(version)
                .select()
                .apis(RequestHandlerSelectors.basePackage("swagger.practice.tentwelve")) 
                .paths(PathSelectors.ant("/v1/api/**"))
                .build()
                .apiInfo(apiInfo(title, version));
    }
}
  1. @Configuration, @EnableSwagger2 -> 기능 선언

  2. @Bean 핵심이 되는 bean 설정

  3. Docket -> Swagger 핵심이 되는 bean


Method 설명 🛩
useDefaultResponseMessages(false)

200,400 번등 status code를 자동으로 만들어주는 기능. 오류가 날 수 있기에 꺼준다.

  1. groupName : 위에서 선언한 version

  2. select() : ApiSelectorBuilder를 생성

  3. api : package 위치를 지정, controller로 지정하면 되는 듯

  4. paths : 연결되는 path


희찬이 swagger 설정

public Docket api() {
    return new Docket(DocumentationType.SWAGGER_2)
            .select()
            .apis(RequestHandlerSelectors.basePackage("com.ec.sticket.controllers") )
            .paths(PathSelectors.any())
            .build()
            .apiInfo(apiInfo())
            .useDefaultResponseMessages(false)
            .globalResponseMessage(RequestMethod.GET, getArrayList());
}

Controller

@RestController
@Api(value = "BoardController V1")
@RequestMapping("/v1/api")
public class BoardControllerV1 {

    @ApiOperation(value = "아티스트 가져오기", notes = "모든 아티스트 가져온다 이놈아.")
    @ApiResponses({
            @ApiResponse(code = 200, message = "OK !!"),
            @ApiResponse(code = 500, message = "Internal Server Error !!"),
            @ApiResponse(code = 404, message = "Not Found !!")
    })
    @GetMapping("/board")
    public Map<String, String> selectOneBoard(@ApiParam(value = "게시판번호", required = true, example = "1") @RequestParam(defaultValue = "얼수",required = true) String name) {
        Map<String, String> result = new HashMap<>();
        result.put("임얼쑤",name);
        return result;
    }
}

@ApiResponses

  • config 파일에 함께 명시하는게 더 깔끔하다

  • 그러면 @ApiResponses({@ApiResponse 어쩌구}) 안 적어도 된다.

@EnableSwagger2
public class SwaggerConfig {
    private String version;
    private String title;

    @Bean
    public Docket apiV1() {
        version = "V1";
        title = "API VERSION : " + version;

        List<ResponseMessage> responseMessages = new ArrayList<>();
        responseMessages.add(new ResponseMessageBuilder()
                .code(200)
                .message("OK ~~")
                .build());
        responseMessages.add(new ResponseMessageBuilder()
                .code(404)
                .message("Not Found ~~")
                .build());
        responseMessages.add(new ResponseMessageBuilder()
                .code(500)
                .message("Internal Server Error ~~")
                .build());

        return new Docket(DocumentationType.SWAGGER_2)
                .useDefaultResponseMessages(false)
                .groupName(version)
                .select()
                .apis(RequestHandlerSelectors.basePackage("swager.practice.tentwelve"))
                .paths(PathSelectors.ant("/v1/api/**"))
                .build()
                .apiInfo(apiInfo(title, version))
                .globalResponseMessage(RequestMethod.GET, responseMessages);
    }
}

Controller에 이름 부여하는 방법

@Api(tag = " " )

https://stackoverflow.com/questions/37961620/springfox-restcontroller-naming

description deprecated

https://stackoverflow.com/questions/38074936/api-annotations-description-is-deprecated

  • description 관련해서 stackoverflow 방법이 안먹는다. 일단 그냥 tags만 쓰자.
profile
티스토리로 이사했습니다! https://imsfromseoul.tistory.com/ + https://camel-man-ims.tistory.com/

0개의 댓글