ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • spring swagger-ui
    카테고리 없음 2023. 4. 19. 09:55

    spring swagger-ui

    swagger-ui는 테스트? 혹은 문서? 가 있는 UI를 제공 해준다. 한번 살펴 보자 maven에 다음과 같이 추가 하자
    ... 
    
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>2.4.0</version>
    </dependency>
    
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
        <version>2.4.0</version>
    </dependency>
    
    ...
    
    swagger 설정을 해주자
    @Configuration
    @EnableSwagger2
    public class SwaggerConfig {
    
        @Bean
        public Docket restApi() {
            // @formatter:off
            return new Docket(DocumentationType.SWAGGER_2)
                    .apiInfo(apiInfo())
                    .select()
                    .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
                    .build()
                    .useDefaultResponseMessages(false)
                    .globalResponseMessage(RequestMethod.GET,
                            Arrays.asList(
                                    new ResponseMessageBuilder()
                                            .code(500)
                                            .message("server error")
                                            .responseModel(
                                                    new ModelRef("Error")
                                            ).build()
                            )
                    );
            // @formatter:on
        }
    
        private ApiInfo apiInfo() {
            // @formatter:off
            return new ApiInfoBuilder()
                    .title("Spring boot Swagger")
                    .description("api list")
                    .contact(new Contact("wonwoo", "wonwoo.ml", "test@test.com"))
                    .version("1.0.0")
                    .build();
            // @formatter:on
        }
    }
    
    별거 없다. 상태 코드 500은 전부 적용을 한다는 뜻이다. 그리고 제목, 내용, 연락처, 버전 등 입력 할 수 있다. 그런다음에 controller class에 다음과 같이 어노테이션을 추가 하자
    ...
    
    @Api(description = "사용자 API")
    public class AccountController {
    ....
    }
    
    ...
    
    속성으론 value, tags, hidden 등 여러가지가 있다. 그리고 해당 메소드에 다음과 같이 추가하자.
    ...
    
    @ApiOperation(value = "사용자 리스트", notes = "사용자 리스트를 가져옵니다.")
    @RequestMapping(value = "/accounts", method = RequestMethod.GET, headers = "Accept=application/json")
    public List<Account> getAccounts() throws JsonProcessingException {
        List<Account> accounts = accountRepository.findAll();
        return accounts;
    }
    ...
    
    해당 API 의 제목 및 내용이다. 그리고 해당 프로퍼티 명을 지정해 줄 수 있다.
    ...
    
    @ApiModelProperty(value = "사용자 아이디")
    private Long id;
    
    ...
    
    또한 감출수도 있다.
    ...
    
    @ApiModelProperty(hidden = true)
    private List<Ordered> ordered;
    
    ...
    
    완료 되었다. 한번 UI 에들어 가서 확인해보자 http://localhost:8080/swagger-ui.html

    댓글

Designed by Tistory.