DTO에 비밀번호와 주민번호를 받는 프로퍼티를 추가했다.
package com.example.restfulwebservice.user;
import java.util.Date;
import javax.validation.constraints.Past;
import javax.validation.constraints.Size;
import lombok.AllArgsConstructor;
import lombok.Data;
@Data
@AllArgsConstructor
public class User {
private Integer id;
@Size (min=2, message = "Name은 2글자 이상 입력해주세요")
private String name;
@Past
private Date joinDate;
private String password;
private String ssn;
}
그러면 DaoService 파일에서는 오류가 나있다.
매개변수의 개수가 맞지 않아서이다.
지금 password와 ssn이라는 프로퍼티를 추가해 총 5개의 값을 받아야 하는데,
매개변수에 든 값은 3개 뿐이기 때문이다.
개수를 추가해주면 더 이상 오류가 발생하지 않는다.
이후 유저의 정보를 호출하면 이렇게 정보가 출력된다.
그런데 password와 주민번호는 민감한 정보이기 때문에 이런식으로 노출되면 안된다.
특수한 문자로 대체해서 출력하도록 컨트롤러에서 처리할 수도 있고,
아예 null로 전달하는 방법도 있다.
이런 방법도 있지만,
스프링부트에서는 jackson 이라는 라이브러리를 통해 외부에 노출되어서는 안되는 데이터를 제어할 수 있는데,
이 방법에 대해서 알아보도록 한다.
새로 추가했던 password, ssn 프로퍼티에 @JsonIgnore 어노테이션을 추가한다.
이 어노테이션을 붙이면 json 으로 출력할 때, 이 프로퍼티는 null 로 출력이 된다. 데이터에 포함이 안 되는 것이다.
서버를 다시 구동하고 정보를 불러오면
password와 ssn에 담긴 값이 넘어오지만, 화면에는 출력되지 않는다.
개별 프로퍼티 뿐 아니라 클래스 단위로 적용을 하고 특정 프로퍼티만 출력하지 않을 수도 있다.
이번에는 password만 출력하지 않는다.
'프로젝트 > 파이널 프로젝트' 카테고리의 다른 글
Request Parameter와 Header를 이용한 API Version 관리 (0) | 2022.11.24 |
---|---|
RESTful Service 기능 확장 (4) - 데이터 제어 Filtering (2) 개별 사용자 조회 (@JsonFilter, SimpleBeanPropertyFilter, MappingJacksonValue, FilterProvider) (0) | 2022.11.24 |
RESTful Service 기능 확장 (3) - XML 형식 출력 (0) | 2022.11.23 |
RESTful Service 기능 확장 (1) - 유효성 체크 (0) | 2022.11.23 |
파이널 프로젝트 (1) | 2022.11.23 |