스프링 -12

김정현·2024년 7월 17일
0

Spring

목록 보기
12/14

JSON 응답과 요청 처리

REST(Representational State Transfer)

1. JSON 개요

-JSON(JavaScript Object Notation) : 자바스크립트 객체 표기법
-{"이름":"값","이름":"값", ..}

2. Jackson 의존 설정

  • jackson-databind

  • jackson-datatype-jsr310 - Date & Time API - java.time 패키지

  • ObjectMapper
    : 자바 객체 -> JSON 문자열 - writeObjectAsString(자바 객체)
    JSON 문자열 -> 자바 객체 -> readValue(..)

3. @RestController로 JSON 형식 응답

반환값

-자바 객체(getter가 있는) : JSON 문자열로 자바 객체 변환 후 출력

	-응답 헤더 : Content-Type: application/json

-반환 값이 없는 경우 : 응답 body가 비어있음

-문자열 : 문자열 그대로 출력이 된다.

	-응답 헤더 : Content-Type: text/plain

4. @ResponseBody 애노테이션

-@Controller로 설정된 일반 컨트롤러 메서드를 Rest로 응답하게 만들어 주는 애노테이션
-자바 객체, 문자열, 반환값 없음..

5. @Jsonlgnore를 이용한 제외 처리

-JSON 변환시 제외

6. 날짜 형식 변환 처리: @JsonFormat 사용

7. @RequestBody JSON 요청 처리

커맨드 객체 변환 기준 - Content-Type: application/x-www-form-urlencoded;
커맨드 객체 앞에 @RequestBody를 추가하면
Content-Type: application/json으로 판단하고 데이터 변환


POST
PUT
PATCH

-POSTMAN: REST 테스트
-ARC(Advanced Rest Clietn) : REST 테스트

8. ResponseEntity로 객체 리턴하고 응답 코드 지정하기

-응답 헤더, 바디 쪽을 상세하게 설정하는 경우

1) ResponseEntity를 이용한 응답 데이터 처리

바디, 데이터, 응답코드 설정 가능

2) ResponseEntity.status(상태코드).body(객체)

: 응답 상태 코드 + 출력 데이터

3) ResponseEntity.status(상태코드).build();

: 응답 상태 코드/ 출력 데이터 X

4) ReponseEntity.ok(member)

5) noContent() : 204

6) badRequest() : 400

7) notFound() : 404

JSON -> 형식을 고정해서 응답

9. @ExceptionHandler 적용 메서드에서 ResponseEntity로 응답하기

10. @Valid 에러 결과를 JSON으로 응답하기

ARC

  • Errors
    getFieldErrors() : 필드별 전체 에러 정보 (rejectValue(..))

    getGlobalErrors() : 커맨드 객체 자체 에러 정보 (reject(...)..)

    getAllErrors() : 전체 에러 정보

  • UriComponentsBuilder

RestTemplate

  1. <T> ResponseEntity<T> getForEntity(...)
    응답쪽 정보가 필요할 때

  2. <T> T getForObject

  3. <T> ResponseEntity<T> postForEntity

  4. <T> T postForObject

  5. <T> ResponseEntity<T> exchange(...)

HttpEntity -> 헤더, 바디 등 함께 전송시 필요

0개의 댓글