본문 바로가기
TIL

내일배움캠프 7주차 Spring @PathVariable, @RequestParam, @ModelAttribute, @RequestBody,......

by 율량동박씨 2024. 5. 29.

오늘의 키워드

  • RESTful API
  • @PathVariable, @RequestParam, @ModelAttribute, @RequestBody
  • Dispatcher-Servlet

오늘의 내용

ㅇRESTful API
- 웹 표준을 기반으로 하는 API설계 아키텍처입니다
- 네트워크 상에서 클라이언트와 서버 간의 통신을 위해 자원의 상태를 전달하는 방법을 정의
- 클라이언트가 서버의 자원에 접근하고 이를 활용할 수 있도록 하는 역할

ㅇ자원 중심의 URI설계
- 각 자원은 URI로 명확히 식별되어야 한다
- URI는 명사를 사용해야 한다

ㅇHTTP메서드를 통한 행위 정의
-GET : 자원을 조회
-POST : 자원을 생성
-PUT : 자원을 업데이트
-DELETE : 자원을 삭제

ㅇ데이터 포맷
- JSON(JavaScript Object Notation)형식을 통해 데이터를 교환하는 것으로 XML보다 가볍고 읽기 편하다

ㅇ@PathVariable, @RequestParam, @ModelAttribute, @RequestBody
-@PathVariable : URL경로에 포함된 변수를 컨트롤러 메서드의 매개변수로 바인딩하는데 사용
http://localhost:8080/users/1
- 명확한 사용을 해야한다
- 검사를 하고 싶을 때
-@RequestParam : 클라이언트가 전송하는 HTTP요청 파라미터를 컨트롤러 메서드의 매개변수로 바인딩하는 데 사용한다
http://localhost:8080/users?id=1
- GET에서만 사용하는게 좋다
- 필터를 하고 싶을 때
-PathVariabld은 강제성을 가지고 있고 RequestParam은 옵셔널이다

-@ModelAttribute : 요청 파라미터를 객체로 매핑하여 복잡한 데이터 구조를 쉽게 다루게 해 준다

-@RequestBody : 클라이언트가 전송하는 HTTP요청의 본문을 Java객체로 변환하여 받는다 이때 HTTP요청 본문의 내용을 자바 객체로 역직렬화한다
-보안성을 챙길때 사용한다

ㅇDispatcher-Servlet
- HTTP 프로토콜로 들어오는 모든 요청을 가장 먼저 받아 적합한 컨트롤러에 위임해 주는 프런트 컨트롤러이다
 - 클라이언트 요청이 디스페처 서블릿으로 들어온다
 - Handler Mapping을 통해 Controller를 매핑해 준다
 - Handler Adapter를 사용해 Controller로 요청 전달
 - Service단에서 비즈니스 로직을 사용(보통 Database CRUD진행)
 - 컨트롤러가 ResponseEntity반환
 - 서버 응답을 클라이언트로 반환

ㅇ웹에서의 동작
- 하나의 Request가 들어올 때마다 쓰레드를 생성
- 디스패처 서블릿으로 전달
- CSR, SSR로 Response생성
- Response를 전달

오늘의 회고

  • 어제 고장났던 프로젝트파일에 심폐소생술하느냐 하루종일 씨름을 했는데 막상 눈에 띄는 결과가 안보이다 보니 하루종일 아무것도 한 게 없는듯한 공허함만 남아서 멘털도 박살 나고 일찍 쉬어야겠다.....