- section0 : Web Service & Web Application
- section1 : Spring Boot로 개발하는 RESTful API
- section2 : User Service API 추가
- section3 : Restful service 기능 확장
- section4 : Spring Boot API 사용
- section5 : JPA 사용
- section6 : REST API 설계 가이드
Validation-API 혹은 hibernate-validation을 사용해서 유효성 검증을 할 예정
createUser메소드에@Valid라는 어노테이션을 넣어주게 되면 입력하게 된 데이터에 대해서(User) 유효성 검사를 하게 될 것이고User도메인 클래스에 유효성 체크를 하는@Size,@Past와 같은 기능을 넣을 수 있다.
- 1)
dependency추가해주기(pom.xml에 추가)<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> <version>3.0.2</version> </dependency>
- 2) 위와 같이
@size,@Past및UserController의createUser메소드에@Valid추가- 3) 그러나, 문제가 발생시 정확히 어디서 문제가 발생했는지 나오지 않는다.
- 4)
CustomizedResponseEntityExceptionHandler클래스 수정하기- 5) 이 클래스
handMethodArgumentNotValid메서드 추가해주기
다국어 처리는 하나의 처리 값을 여러가지 언어로 표시해주는 것
1) HelloWorldController에 추가
2) 생성자 주입
3) MyRestfulServiceApplication에 LocaleResolver 메소드 작성
4) application.yml에 message 추가
5) messages.properties 추가
- 우리가 만들고 있는 api의 반환 값을
json데이터 포맷에서xml데이터 포맷으로 바꿔본다.- XML Format을 처리하기 위해서
pom.xml에서dependency추가
- 클라이언트에게 전달해주는 정보를 제어하기 위한 방법
- 먼저 우리가 작성한 유저 도메인 클래스에 사용자 주민번호와 같은 중요한 필드를 추가한다고 가정해 봅시다.
- 이러한 정보는 굉장히 중요하므로 외부에 노출시키고 싶지 않은 정보입니다.
- 스프링 부트에서는
json데이터를 보여주거나 보여지지 않거나 하는 식의 작업을 제공합니다.
@JsonIgnore라는 어노테이션을 추가하게 되면 이러한 정보가 보이지 않게 막을 수 있습니다.
- 추가 :
@JsonIgnoreProperties를 사용하면value값으로 묶어서 한번에 보이지 않도록 처리할 수 있습니다.(@JsonIgnore주석 처리)@JsonIgnoreProperties(value = {"password", "ssn"})
AdminUser 클래스 추가 후, @JsonFilter 라는 어노테이션을 추가 ( 나머지 동일)AdminUserController 클래스 추가 후, retrieveUseradmin 메서드만 사용RetrieveAllUsers 라는 메서드에서 MappingJacksonValue 로 반환값을 바꿔서 실행해주면 된다.
- 우리가 생성한 사용자 관리 API의 버전 관리 기능에 대해서 살펴보자.
- 아래와 같이
admin과users사이에v1을 추가해준다.
- 추가로, 지금까지 사용했던 유저 도메인을 복사를 해서 우리가 어드민 유저라는 이 도메인 클래스를 사용을 했었는데 이 부분도 v2를 위해서
AdminUserV2라는 새로운 클래스를 만들어준다.- 여기에 필요한
@JsonFilter값을 필터링 같이 적용할 것이기 때문에@JsonFilter를 만들어준다.- 추가로,
retrieveUserV2라는 메서드를 만들어준다. 기존에 만들었던 데이터에다가 새롭게VIP라고 되어 있는grade값을 추가해준다. 기존v1에는ssn이 있었다고 하면v2에는 얘를 빼고grade를 추가해준다.
- 이번에는 Request parameter와 헤더 정보를 이용해서 버전 관리를 해 보겠습니다.
- 기존에 사용했던
버전 정보(v1, v2)와 같은 것들을 삭제하고 새로운 버전 관리 기능을 넣습니다.- 파라미터 값 중에서
version="1",version="2"이라는 값이 전달되도록 하겠습니다.