ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [RESTFUL 학습] SWAGGER 심화-1
    SPRING/WEBSERVICE 2020. 8. 31. 00:26
    @Configuration
    @EnableSwagger2
    public class SwaggerConfig {
    
        private static final Contact DEFAULT_CONTACT
                = new Contact("Lee","http://www.jump.com","bins@naver.com");
    
        private static final ApiInfo DEFAULT_API_INFO = new ApiInfo("AweSome API Title","rest api study","1.0", "urn:tos",DEFAULT_CONTACT, "Apache 2.0","http://www.apace.org", new ArrayList<>());
    
        private static final Set<String> DEFAULT_PRODUCTS_AND_CONSUMES =  new HashSet<>(Arrays.asList("application/json","application/xml"));
    
        @Bean
        public Docket api() {
            return new Docket(DocumentationType.SWAGGER_2)
                       .apiInfo(DEFAULT_API_INFO)
                       .produces(DEFAULT_PRODUCTS_AND_CONSUMES)
                       .consumes(DEFAULT_PRODUCTS_AND_CONSUMES);
        }
    
        @Bean
        public LinkDiscoverers discovers() {
    
            List<LinkDiscoverer> plugins = new ArrayList<>();
            plugins.add(new CollectionJsonLinkDiscoverer());
            return new LinkDiscoverers(SimplePluginRegistry.create(plugins));
    
        }
    }
    

     

    Swagger Config파일에 위와 같이 추가 정보를 설정할 수 있다.

    Contact : 계약정보 - import springfox.documentation.service.Contact;

    ApiInfo : API 정보 - import springfox.documentation.service.ApiInfo;

    Consume / produces 정보

    - 서버로 보낼 데이터의 Content-type을 설정해 줍니다. consumes: - application/json

    - 클라이언트에게 전송할 데이터의 Content-type을 설정해 줍니다. produces: - application/json

    위와 같이 contact, license정보를 JSON 형태로 추가로 보내는 것을 POSTMAN을 찍어볼 수 있다.

     

    package com.example.demo.user;
    
    import java.util.Date;
    
    import com.fasterxml.jackson.annotation.JsonFilter;
    import com.fasterxml.jackson.annotation.JsonIgnore;
    import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
    import io.swagger.annotations.ApiModel;
    import io.swagger.annotations.ApiModelProperty;
    import lombok.AllArgsConstructor;
    import lombok.Data;
    import lombok.NoArgsConstructor;
    
    import javax.validation.constraints.Past;
    import javax.validation.constraints.Size;
    
    @Data
    @AllArgsConstructor
    // <!-- 아래와 같이도 표현가능 -->
    //@JsonIgnoreProperties(value={"password"})
    @NoArgsConstructor
    // @JsonFilter("UserInfo")
    @ApiModel(description = "사용자 상세 정보를 위한 도메인 객체")
    public class User {
    
        private Integer id;
        @Size(min=2, message ="Name은 2글자 이상 입력해 주세요.")
        @ApiModelProperty(notes ="사용자의 이름을 입력해주세요.")
        private String name;
        @Past
        @ApiModelProperty(notes ="사용자의 등록일을 입력해주세요.")
        private Date joinDate;
    
        //@JsonIgnore
    
        @ApiModelProperty(notes ="사용자의 패스워드를 입력해주세요.")
        private String password;
        // @JsonIgnore
    
        @ApiModelProperty(notes ="사용자의 주민번호를 입력해주세요.")
        private String ssn;
    }
    

     

    그리고 VO에서 위와 같이 ApiModel 어노테이션을 이용하여 각 필드에 추가 정보를 같이 보낼 수 있다.

     

     

     

     

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

    [RESTFUL 학습] spring-security 기본  (0) 2020.08.31
    [RESTFUL] HAL BROWSER  (0) 2020.08.31
    [RESTFUL 학습] SWAGGER  (0) 2020.08.23
    [RESTFUL 학습] HAETAOS  (0) 2020.08.23
    [Restuful 학습] - 버전관리  (0) 2020.08.08
Designed by Tistory.