이번에는 XML 문서 포맷과 데이터 제어 필터링에 대해 알아보려고 한다.
이제까지는 모든 정보를 JSON포맷으로 전달하였는데 이를 XML포맷으로 전달하는 것이다.
이렇게 Header에 Accept - application/xml 을 입력하여 정보를 받아보면 406 Not Acceptable 코드가 출력되는 것을 알 수 있다.
xml을 정상적으로 처리할 수 있는 라이브러리를 추가하면 해결된다.
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
<version>2.10.2</version>
</dependency>
pom.xml에 dependency를 추가해주고 다시 build해준다.
변경사항이 있기 때문에 서버를 재기동 시켜주고 포스트맨을 다시 실행시켜준다.
이렇게 xml 형태로 정보들이 출력되는 것을 볼 수 있다.
다음으로는 클라이언트에게 전달해주고자 하는 값을 제어하는 방법에 대해 알아보려고 한다.
package com.example.restfulwebservice.User;
import lombok.AllArgsConstructor;
import lombok.Data;
import javax.validation.constraints.Past;
import javax.validation.constraints.Size;
import java.util.Date;
@Data
@AllArgsConstructor
public class User { //Lombok사용으로 간단하게 선언만 해줌
private Integer id;
// 유효성 체크
@Size(min=2, message = "Name은 2글자 이상 입력해주세요.")
private String name;
//과거 데이터로 지정
@Past
private Date joinDate;
private String password;
private String ssn;
}
User 도메인에서 정보를 수정해준다.
Service 에 가면 오류가 나는데 생성자에서 추가한 정보에 대한 정보들도 추가해준다.
정보를 추가해주고 포스트맨에서 확인해보면 추가된 정보까지 나타난 것을 확인할 수 있다.
하지만 password나 ssn 같은 중요정보들을 클라이언트에게 있는 그대로 보여주면 안된다.
필드에 데이터값을 남기는 것이 아닌 특정한 어노테이션을 추가하여 처리를 해보려고 한다.
[ @JsonIgnore 개별적 설정 ]
@JsonIgnore 어노테이션을 이용하여 처리하면 무시하는 의미로 전달하고자 하는 데이터값을 제어할 수 있다.
이렇게 기존에는 다 나왔던 정보들이 제어됨으로써 나타나지 않는 것을 확인해볼 수 있다.
[ @JsonIgnore 클래스 설정 ]
@JsonIgnoreProperties(value = {"password","name
를 이용하여 클래스 자체로 설정을 해줄 수 있다.
클래스블럭에 설정을 추가한 후 확인을 해보면 설정한대로 필터링이 된 것을 확인해볼 수 있다.
이는 개별사용자 조회에도 동일하게 적용이 된다.
'프로그래밍 > SPRING BOOT' 카테고리의 다른 글
[인프런 : spring-boot] REST API Version 관리 (1) (1) | 2022.09.01 |
---|---|
[인프런 : spring-boot] 프로그래밍으로 제어하는 Filtering (1) | 2022.09.01 |
[인프런 : spring-boot] 다국어 처리를 위한 Internationalization (0) | 2022.09.01 |
[인프런 : spring-boot] 유효성 체크를 위한 Validation API (0) | 2022.09.01 |
[인프런 : spring-boot] DELETE-HTTP Method (0) | 2022.08.30 |