본문 바로가기
STUDY/SPRING

SPRING SWAGGER 정의

by NOTEEE 2018. 7. 24.

저번에 Spring Swagger 관련하여 정리를 했었는데,

다시 한번 더!




Swagger?

  • Rest 기반의 API의 매핑된 URL을 자동으로 문서 및 테스트 환경을 만들어주는 오픈소스이다.
  • Swagger을 도입함으로서 클라이언트와 개발자가 파라미터들의 호출에 맞게 호출 및 테스트를 진행 할 수 있다.

SpringBoot에 설치
  • pom.xml 추가
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
        <version>2.4.0</version>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>2.4.0</version>
        <scope>compile</scope>
    </dependency>
    cs
  • Swagger Config 설정
    @Configuration
    @EnableSwagger2
    public class SwaggerConfig {
     
        /**
         * SwaggerEnableSwagger2  설정
         */
        @Bean
        public Docket newsApi() {
            ArrayList<ResponseMessage> responseMessageStatus = newArrayList(
                    new ResponseMessageBuilder().code(400).message("Bad Request").responseModel(new ModelRef("Error")).build(),
                    new ResponseMessageBuilder().code(401).message("No permission").responseModel(new ModelRef("Error")).build(),
                    new ResponseMessageBuilder().code(404).message("Not found").responseModel(new ModelRef("Error")).build(),
                    new ResponseMessageBuilder().code(405).message("Method Not Allowed").responseModel(new ModelRef("Error")).build(),
                    new ResponseMessageBuilder().code(500).message("Internal Server Error").responseModel(new ModelRef("Error")).build()
            );
            return new Docket(DocumentationType.SWAGGER_2)
                    .select()
                    .apis(RequestHandlerSelectors.any()) // 현재 RequestMapping으로 할당된 모든 URL 리스트를 추출
                    .paths(PathSelectors.ant("/api/**")) // 그중 /api/** 인 URL들만 필터링 .build();
                    .build()
                    .apiInfo(apiInfo())
                    .globalResponseMessage(RequestMethod.POST, responseMessageStatus)
                    .globalResponseMessage(RequestMethod.GET, responseMessageStatus)
                    .globalResponseMessage(RequestMethod.PUT, responseMessageStatus)
                    .globalResponseMessage(RequestMethod.DELETE, responseMessageStatus);
        }
        private ApiInfo apiInfo() {
            return new ApiInfoBuilder()
                    .title("REST API")
                    .contact("TEST")
                    .version("0.0.1")
                    .build();
        }
    }
    cs

  • Sample 클래스 생성
    @Api(tags = "Sample API", description = "샘플 API 가이드")
    @RestController
    @RequestMapping("/api/sample")
    public class SampleCtrl {
        private static final Logger logger = LoggerFactory.getLogger(SampleCtrl.class);
        
        @Autowired
        private SampleSvc sampleSvc;
     
        @ApiOperation(value = "샘플 리스트", notes = "샘플리스트 API", response=ResponseResult.class)
        @ApiImplicitParams({
            @ApiImplicitParam(name = "email", value = "이메일", required = true, dataType = "String", paramType = "query"),
            @ApiImplicitParam(name = "passwd", value = "비밀번호", required = true, dataType = "String", paramType = "query")
         })
        @RequestMapping(value = "", method=RequestMethod.GET)
        public ResponseResult getSample(@Valid @ModelAttribute Sample sample){
            ResponseResult rr = new ResponseResult();
            
            try{
     
            } catch (Exception e) {
                logger.error(e.toString());
            }
            return rr;
        }
    }
    cs

  • http://localhost:8080/swagger-ui.html 경로로 접속해보면 Sample에 대한 API가 생성되었음을 알 수 있다.


끝.




'STUDY > SPRING' 카테고리의 다른 글

SpringBootSecurity Rest Login 적용  (0) 2018.08.24
Executorexception: No constructor found in XXX  (0) 2018.07.25
@Valid  (0) 2018.07.23
SPRING LOADED 적용  (0) 2018.07.23
SPRINGBOOT CONSOLE SQL 정렬  (0) 2018.07.19