[Spring] HTTP 메시지 컨버터

EB·2021년 8월 29일
0
post-custom-banner

HTTP 메시지 컨버터를 적용한다.

  • HTTP 요청 : @RequestBody,HttpEntity(RequestEntity)
  • HTTP 응답 : @ResponseBody,HttpEntity(ResponseEntity)

주요한 메시지 컨버터

📌 ByteArrayHttpMessageConverter

  • byte[] 데이터를 처리한다.
  • 클래스 타입: byte[], 미디어타입: */*
  • 요청 예) @RequestBody byte[] data
  • 응답 예) @ResponseBody return byte[] 쓰기 미디어타입 application/octet-stream

📌 StringHttpMessageConverter

  • String 문자로 데이터를 처리한다.
  • 클래스 타입: String, 미디어타입: */*
  • 요청 예) @RequestBody String data
  • 응답 예) @ResponseBody return "ok" 쓰기 미디어타입 text/plain

📌 MappingJackson2HttpMessageConverter

  • application/json
  • 클래스 타입: 객체 또는 HashMap, 미디어타입: application.json 관련
  • 요청 예) @RequestBody HelloData data
  • 응답 예) @ResponseBody return helloData 쓰기 미디어타입 application.json 관련

💻HTTP 요청 데이터 읽기

  1. HTTP 요청이오고, 컨트롤러에서 @RequestBody,HttpEntity파라미터를 사용한다.
  2. 메시지 컨버터가 메시지를 읽을 수 있는지 확인하기 위해 canRead() 호출
    • 대상 클래스 타입을 지원?
      👉 ex) @RequestBody의 대상 클래스 (byte[],String,HelloData)
    • HTTP 요청의 Content-Type 미디어 타입을 지원?
      👉 ex) text/plain ,application/json, */*

3.canRead()조건 만족시 read()를 호출해서 객체 생성 및 반환

💻HTTP 응답 데이터 생성

  1. 컨트롤러에서@ResponseBody, HttpEntity로 값이 반환
  2. 메시지 컨버터가 메시지를 쓸 수 있는지 확인하기 위해 canWrite() 호출한다.
    • 대상 클래스 타입을 지원?
      👉 ex) return의 대상 클래스 (byte[],String,HelloData)
    • HTTP 요청의 Accept 미디어 타입을 지원?(@RequestMapping의 produces)
      👉 ex) text/plain ,application/json, */*
  3. canWrite()조건을 만족시 write()를 호출해서 HTTP 응답 메시지 바디에 데이터를 생성한다.
profile
👩‍💻✨junior developer
post-custom-banner

0개의 댓글