-
[RESTFUL 학습] SWAGGER 심화-1SPRING/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