📎 강의 들으며 헷갈리는 Spring 문법 정리
📌HTTP 요청 메시지
:HTTP 요청 메시지에 대해 더 자세한 내용은 아래의 글을 참고하자
https://dev-haen.tistory.com/19
🙋🏻♀️ HTTP 요청 메시지를 통해 클라이언트에서 서버로 데이터를 전달하는 방법을 알려주세요 !
💡HTTP 요청 메시지를 통해 클라이언트에서 서버로 값을 가져올 땐 주로 다음 3가지 방법을 사용합니다.
1. GET - 쿼리 파라미터
2. POST - HTML Form
3. HTTP message body에 데이터를 직접 담아서 요청
- GET - 쿼리 파라미터
- /url?username=hello&age=20
- Message Body 없이, URL의 쿼리 파라미터에 데이터를 포함해서 전달
- 예) 검색, 필터, 페이징등에서 많이 사용하는 방식
- POST - HTML FORM
- Message Body에 쿼리 파라미터 형식으로 데이터를 전달
- 예) 회원 가입, 상품 주문, HTML Form 사용
- HTTP API
- Message Body에 데이터를 직접 담아서 요청
- 데이터 형식은 주로 API를 사용하며 PATCH, POST, PUT 가능
📌Controller에서 사용하는 애노테이션
🙋🏻♀️ Controller에서 사용하는 애노테이션의 종류를 설명해주세요.
💡 Spring에서 사용되는 Annotation에 대해 설명해드리겠습니다 !
1. @RequestMapping: 핸들러 메서드가 어떤 요청을 처리할 지 매핑할 때 사용되는 애노테이션
2. @GetMapping, @PostMapping, @PutMapping, @DeletMapping(): 각 Get,Post,Put,Delete 요청을 처리하기 위해 사용되는 애노테이션
("@RequestMapping(method=RequestMethod.GET)"와 같은 방법이며, 간편화 된 방법이다.)
3. @RequestParam: URL 쿼리 파라미터를 사용할 때 값을 바인딩하는 애노테이션
("@RequestParam String id"와 같은 형태.)
(URL의 쿼리 파라미터에 데이터를 포함한 방식에 주로 쓴다. REST API 방법엔 쓰이지 않는다.)
4. @PathVariable: URL 경로의 일부를 바인딩하는 애노테이션
5. @RequestBody: HTTP 요청 Message Body 부분의 데이터를 메서드 파라미터의 "객체"로 바인딩할 때 사용
(주로 JSON, XML 데이터를 처리할 때 사용)
6. @ResponseBody: 핸들러 메서드가 반환한 값을 HTTP Body에 쓰기 위한 애노테이션
7. @RestController: RESTful 웹 서비스를 개발할 때 사용하는 애노테이션. 클래스에 @RestController 애노테이션을 달면 모든 핸들러 메서드의 반환 값이 HTTP 응답 메시지 바디에 쓰여진다.
(@ResponseBody와 @Controller가 합쳐진 애노테이션이다. 두 가지 기능을 한 번에 적용할 수 있으므로 코드를 더 간결하게 작성할 수 있다.)
(주로 JSON, XML 데이터를 처리할 때 사용)
8. @ModelAttribute: 요청을 처리하기 전에, Model 객체를 View로 넘기기 위해 바인딩 하는 애노테이션
9. @ResponseStatus: 예외처리를 할 때, 상태코드를 지정하기 위해 사용하는 애노테이션
10. @ExceptionHandler: 컨트롤러 내의 예외를 처리할 때 사용하는 애노테이션
11. @SessionAttribute: 세션에 저장할 모델 속성을 지정하기 위해 사용
12. @RestControllerAdvice: 예외 처리를 할 때, 여러 컨트롤러에서 발생하는 오류들을 처리하는 애노테이션
(클래스에 애노테이션을 사용하여, 컨트롤러에서 발생하는 예외를 분리해서 처리할 수 있다)
13. @ControllerAdvice: 12번과 똑같은 역할을 한다. 대신 @ResponseBody역할을 하지 않는다.
(@ResponseBody의 유무 차이)
📌ResponseEntity<>란?
🙋🏻♀️ ResponseEntity<>가 무엇이고, 어떻게 사용되는지 궁금해요
💡 ResponseEntity<ErrorResult>는 스프링 MVC에서 HTTP 응답을 나타내는 클래스입니다.
이 클래스는 HTTP 응답의 상태 코드, 헤더 및 본문을 포함하는 엔티티를 나타냅니다.
여기서 ResponseEntity를 사용하는 이유는 다음과 같습니다!
1. 상태 코드 및 헤더 제어: ResponseEntity를 사용하면 HTTP 응답의 상태 코드와 헤더를 직접 제어할 수 있습니다.
예를 들어, HttpStatus.BAD_REQUEST와 같이 원하는 상태 코드를 지정하고, 필요한 경우 헤더를 추가하거나 수정할 수 있습니다.
2. 응답 본문 설정 : ResponseEntity의 제네릭 타입으로 특정 클래스를 지정하여 응답 본문으로 사용할 객체를 전달할 수 있습니다.
이를 통해 클라이언트에게 전송할 데이터를 포함하는 응답 본문을 생성할 수 있습니다.
'Spring' 카테고리의 다른 글
| [Spring] 연관관계 매핑 (0) | 2024.06.30 |
|---|---|
| [Spring] Jsoup를 사용한 html 파싱 (0) | 2024.06.17 |
| 스프링 MVC 2편 - 백엔드 웹 개발 핵심 기술 [API 예외 처리] (0) | 2024.02.23 |
| 스프링 MVC 2편 - 백엔드 웹 개발 핵심 기술 [예외 처리와 오류 페이지] (0) | 2024.02.23 |
| 스프링 MVC 2편 - 백앤드 웹 개발 핵심 기술 [Servlet Filter && Interceptor] (0) | 2024.02.21 |