🧾
HttpEntity란?
- HTTP Header, Body 정보를 편리하게 조회할 수 있도록 만들어 줌
🔍 역할 정리
| 기능 | 설명 |
|---|---|
| ✅ Body 조회 | 요청 메시지 바디 내용 직접 읽기 |
| ✅ Header 조회 | 요청 헤더 확인 가능 |
| ✅ 응답 처리 | 응답 바디 + 헤더 + 상태코드 모두 설정 가능 |
| ❌ View 처리 | View 이름 반환과는 무관 (View 이름 X) |
| ❌ RequestParam과 무관 | 파라미터(Query String)는 이 방식과 관계없음 |
💡 HttpEntity의 확장 클래스
| 클래스명 | 설명 |
|---|---|
RequestEntity<T> | + 요청 URL, HTTP 메서드 등 정보 포함 |
ResponseEntity<T> | + 응답 상태 코드 지정 가능 (ex. 201 CREATED) |
🗒️ 예시 코드
@Controller
public class RequestBodyStringController {
@PostMapping("/v4/request-body-text")
public HttpEntity<String> requestBodyTextV4(RequestEntity<String> httpEntity) {
// HttpMessageConverter가 동작해서 아래 코드가 동작하게 됨
String body = httpEntity.getBody();
// url, method 사용 가능
return new ResponseEntity<>("response = " + body, HttpStatus.CREATED); // Body Data, 상태 코드
}
}
🧪 Postman 요청:
201 Createdresponse = 요청 내용🌼
@RequestBody,@ResponseBody
- 각각
Request,Response객체의Body에 편하게 접근하여 사용할 수 있음
📌 핵심 개념
| 어노테이션 | 역할 |
|---|---|
@RequestBody | HTTP 요청 바디 → 자바 객체 or 문자열 |
@ResponseBody | 자바 객체 or 문자열 → HTTP 응답 바디 |
@RequestHeader | 요청 헤더 값 조회 가능 |
🗒️ 예시 코드
@Controller // @RestController = @Controller + @ResponseBody
public class RequestBodyStringController {
@ResponseBody
@PostMapping("/v5/request-body-text")
public String requestBodyTextV5(
@RequestBody String body,
@RequestHeader HttpHeaders headers
) {
// HttpMessageConverter가 동작해서 아래 코드가 동작하게 됨
String bodyMessage = body;
return "request header = " + headers + " response body = " + bodyMessage;
}
}
📨 @RequestBody
@PostMapping("/v5/request-body-text")
@ResponseBody
public String requestBodyTextV5(
@RequestBody String body,
@RequestHeader HttpHeaders headers
) {
return "request header = " + headers + " response body = " + body;
}
→ @RequestBody String body: 텍스트 그대로 읽어옴
→ @RequestBody MyDto dto: JSON → 객체로 자동 변환 (Jackson 등 사용)
📤 @ResponseBody
🌐 @RestController = @Controller + @ResponseBody
@RestController를 사용@RestController
public class MyApiController {
@PostMapping("/echo")
public String echo(@RequestBody String body) {
return "You sent: " + body;
}
}