반응형
지난번에는 Docket 이라는 클래스에 기본 객체를 생성하였는데 여기에 API정보나 consumer 정보 등을 변경해보려고 한다.
먼저 API 정보, produces 정보 등을 입력해준다.
[ SwaggerConfig Class ]
package com.example.restfulwebservice.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
//설정 관련 어노테이션
@Configuration
//Swagger 관련 어노테이션
@EnableSwagger2
public class SwaggerConfig {
private static final Contact DEFAULT_CONTACT
= new Contact("minjeong", "http://www.minjeong.co.kr", "sdwp0920@gmail.com");
//API info 값
private static final ApiInfo DEFAULT_API_INFO
= new ApiInfo("Awesome API Title", "My User management REST API service",
"1.0", "urn:tos", DEFAULT_CONTACT, "Apache 2.0",
"http://www.apache.org/licenses/LICENSE-2.0", new ArrayList<>());
//produce 값
private static final Set<String> DEFAULT_PRODUCES_AND_CONSUMES
= new HashSet<>(Arrays.asList("application/json", "application/xml")); //이러한 설정은 option
@Bean
//api 관련된 document , 반환값으로 Docket 형태
public Docket api(){
return new Docket(DocumentationType.SWAGGER_2);
}
}
1. contact : 계약정보
private static final Contact DEFAULT_CONTACT
= new Contact("minjeong", "http://www.minjeong.co.kr", "sdwp0920@gmail.com");
2. ApiInfo : API 정보
//API info 값
private static final ApiInfo DEFAULT_API_INFO
= new ApiInfo("Awesome API Title", "My User management REST API service",
"1.0", "urn:tos", DEFAULT_CONTACT, "Apache 2.0",
"http://www.apache.org/licenses/LICENSE-2.0", new ArrayList<>());
3. Consume & Produces
//produce 값
private static final Set<String> DEFAULT_PRODUCES_AND_CONSUMES
= new HashSet<>(Arrays.asList("application/json", "application/xml")); //이러한 설정은 option
- 서버로 보낼 데이터의 Content-type 과 클라이언트에게 전송할 데이터의 Content-type
그 후 선언되어있던 Docket 객체에 API, PRODUCES, CONSUMES 에 대한 정보들을 지정해서 커스터마이징을 해본다.
* Docket : Swagger 설정의 핵심 Bean으로 설정값을 가짐
설정을 다 하고 서버를 재기동시킨 후 웹 브라우저를 통해 확인해보면,
내가 설정해놓은 것들이 contact / license 등으로 등록된 것을 확인해볼 수 있다.
이번에는 도메인 객체에 대한 정보도 커스텀을 해보려고 한다.
기존의 User 객체를 보면 이런 형태로 데이터가 존재하는 것을 알 수 있다.
이 부분에 title, description 등과 같은 정보를 추가해보려고 한다.
package com.example.restfulwebservice.User;
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;
import java.util.Date;
@Data
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(description = "사용자 상세 정보를 위한 도메인 객체")
public class User { //Lombok사용으로 간단하게 선언만 해줌
private Integer id;
@Size(min=2, message = "Name은 2글자 이상 입력해주세요.")
@ApiModelProperty(notes = "사용자 이름을 입력해주세요.")
private String name;
@Past
@ApiModelProperty(notes = "등록일을 입력해주세요.")
private Date joinDate;
@ApiModelProperty(notes = "사용자 비밀번호를 입력해주세요.")
private String password;
@ApiModelProperty(notes = "사용자 주민번호를 입력해주세요.")
private String ssn;
}
@ApiModel(description = "사용자 상세 정보를 위한 도메인 객체")
@ApiModelProperty(notes = "사용자 이름을 입력해주세요.")
이 두가지 어노테이션을 이용하여 정보를 등록해본다.
서버를 재기동하고 다시 API문서를 확인해보면,
description이 추가된 것을 볼 수 있다.
그리고 UI 페이지에 들어가서 확인해보면,
이렇게 추가한 내용을 확인해볼 수 있다.
-
반응형
'프로그래밍 > SPRING BOOT' 카테고리의 다른 글
[인프런 : spring-boot] HAL Browser를 이용한 HATEOAS 기능 구현 (0) | 2022.09.07 |
---|---|
[인프런 : spring-boot] Monitoring을 위한 Actuator 설정 (0) | 2022.09.07 |
[인프런 : spring-boot] Swagger 사용 (0) | 2022.09.02 |
[인프런 : spring-boot] HATEOAS 적용 (0) | 2022.09.02 |
[인프런 : spring-boot] REST API Version 관리 (2) (0) | 2022.09.02 |