250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- html form
- 백준
- 테스트코드
- 참조변수
- DI
- 서블릿
- @configuration
- 코드트리
- 의존관계
- 스프링컨테이너
- 오블완
- HttpServletResponse
- 티스토리챌린지
- 스프링
- 오버라이딩
- objecterror
- 코딩테스트
- JSON
- http 메시지 컨버터
- fielderror
- 다형성
- 추상클래스
- 프록시
- 김영한
- 인터페이스
- 코드트리조별과제
- equals()
- ocp
- java
- 싱글톤
Archives
- Today
- Total
minOS
스프링 MVC 기본 기능 - 응답(2) 본문
728x90
HTTP 응답 - HTTP API, 메시지 바디에 직접 입력
HTTP API를 제공할 때는 HTML이 아니라 데이터를 전달해야 하므로, HTTP 메시지 바디에 JSON 같은 형식으로 데이터를 실어 보낸다. 이 경우 정적 리소스나 뷰 템플릿을 거치지 않고, 서버가 직접 HTTP 응답 메시지를 생성하여 클라이언트에 전달한다.
1) 문자열 응답을 직접 HttpServletResponse 객체를 사용해 전송하는 방법
@GetMapping("/response-body-string-v1") public void responseBodyV1(HttpServletResponse response) throws IOException { response.getWriter().write("ok"); }
서블릿을 직접 다룰 때 처럼 response.getWriter().write("ok");
HttpServletResponse 객체를 통해서 HTTP 메시지 바디에 직접 `ok` 응답 메시지를 전달한다.
2) ResponseEntity를 사용해 문자열 응답을 전송하는 방법
@GetMapping("/response-body-string-v2") public ResponseEntity<String> responseBodyV2() { return new ResponseEntity<>("ok", HttpStatus.OK); // 상태 코드 200과 함께 "ok" 문자열을 반환 }
`ResponseEntity` 엔티티는 `HttpEntity` 를 상속 받았는데, HttpEntity는 HTTP 메시지의 헤더, 바디 정보를 가
지고 있다. `ResponseEntity` 는 여기에 더해서 HTTP 응답 코드를 설정할 수 있다. `HttpStatus.OK` 로 변경하면 200 응답이 나가는 것을 확인할 수 있다.
4) ResponseEntity를 사용해 JSON 형식의 객체를 전송하는 방법
@GetMapping("/response-body-json-v1") public ResponseEntity<HelloData> responseBodyJsonV1() { HelloData helloData = new HelloData(); helloData.setUsername("미노이"); // HelloData 객체에 사용자 이름 설정 helloData.setAge(20); // HelloData 객체에 나이 설정 return new ResponseEntity<>(helloData, HttpStatus.OK); // 상태 코드 200과 함께 HelloData 객체를 JSON 형식으로 반환 }
`ResponseEntity` 를 반환한다. HTTP 메시지 컨버터를 통해서 JSON 형식으로 변환되어서 반환된다.
5) JSON 형식의 객체를 간단히 전송하는 방법@ResponseStatus(HttpStatus.OK) // 응답 상태 코드를 200으로 설정 @GetMapping("/response-body-json-v2") public HelloData responseBodyJsonV2() { HelloData helloData = new HelloData(); helloData.setUsername("미노이"); // HelloData 객체에 사용자 이름 설정 helloData.setAge(20); // HelloData 객체에 나이 설정 return helloData; // HelloData 객체를 JSON 형식으로 반환 }
ResponseEntity는 HTTP 응답 코드를 설정할 수 있는데, `@ResponseBody` 를 사용하면 이런 것을 설정하기 까
다롭다
@ResponseStatus(HttpStatus.OK)` 애노테이션을 사용하면 응답 코드도 설정할 수 있다.물론 애노테이션이기 때문에 응답 코드를 동적으로 변경할 수는 없다. 프로그램 조건에 따라서 동적으로 변경하려면 ResponseEntity를 사용하면 된다.
@RestController
Spring에서 RESTful 웹 서비스를 만들 때 사용하는 애너테이션이다. 이 애너테이션을 클래스에 붙이면, 클래스의 모든 메서드는 자동으로 JSON 또는 XML 형식의 데이터를 HTTP 응답 본문으로 반환한다. 이는
@Controller와@ResponseBody를 합친 기능을 제공한다.
728x90
'TIL > 김영한의 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술' 카테고리의 다른 글
스프링 MVC 기본 기능 - 요청 매핑 핸들러 어댑터 구조 (0) | 2024.08.10 |
---|---|
스프링 MVC 기본 기능 - HTTP 메세지 컨버터 (0) | 2024.08.02 |
스프링 MVC 기본 기능 - 응답(1) (0) | 2024.07.31 |
스프링 MVC 기본 기능 - HTTP 요청 메시지(2) (0) | 2024.07.30 |
스프링 MVC 기본 기능 - HTTP 요청 메시지(1) (0) | 2024.07.29 |