본문 바로가기
개인 공부/BackEnd Study

[ Spring Boot ] 맨날 까먹는 나를 위한 복습 - 11 -

by 킴도비 2024. 3. 22.

11.1 REST API의 동작 이해하기

💡 복습!

  • 클라이언트가 보내는 HTTP 요청 메시지
    • 시작 라인 : 요청 라인 (PATCH /post/1 HTTP/1.1)
    • 헤더 : Content-Length, Content-Type, Host
    • 본문 : JSON 데이터 내용
  • 응답 메시지
    • 시작 라인 : 상태 라인(HTTP/1.1 200)
    • 헤더 : date, Content-Type, charset ..etc
    • 본문 : JSON 데이터 내용
  • 상태 코드(100~500번대까지 5개 그룹으로 나뉘어짐)
    • 요청 성공(HttpStatus.OK) : 200
    • 데이터 생성 완료 (HttpStatus.CREATED): 201
    • 요청한 정보 찾을 수 없음 : 404
    • 서버 오류 : 500
  • JSON은 키와 값의 쌍으로 이룸!
    • 아래와 같이 또 다른 JSON 데이터와 배열 사용 가능
address : {
	"street" : "Nambu Street 151",
   	 "suite" : "Central Villat 301",
   	 ...
},
"likes" : ["singing", "jogging", "writing"]

 

  • REST : HTTP URL로 서버의 자원을 명시하고, HTTP 메서드(POST, GET, PATCH/PUT, DELETE)로 해당 자원에 대해 CRUD하는 것을 말함
  • API :  클라이언트가 서버의 자원을 요청할 수 있도록 서버에서 제공하는 인터페이스

 

11.2 REST API의 구현 과정

  • REST API로 요청과 응답을 주고 받을 때는 REST 컨트롤러(@RestController)를 사용
  • 응답할 때 적절한 상태 코드를 반환하기 위해 ResponseEntity라는 클래스 활용

 

11.3 REST API 구현하기

  • REST 컨트롤러와 일반 컨트롤러의 차이란?
    • REST 컨트롤러는 JSON이나 텍스트 같은 데이터를 반환
    • 일반 컨트롤러는 뷰 페이지를 반환

 

  • REST API에서 데이터를 생성할 때는 JSON으로 데이터를 받아와야 하므로 dto 매개 변수 앞에 @RequestBody라는 어노테이션을 추가해야 한다.

 

  • Slf4j는 Simple logging facade for Java의 약자. 로깅을 직접하지 않고 로깅 라이브러리를 찾아서 사용할 수 있도록 해줌

 

  • ResponseEntity란?
    • Rest 컨트롤러의 반환형, 즉 REST API의 응답을 위해 사용하는 클래스
    • REST API 요청을 받아 응답할 때 이 클래스에 HTTP 상태코드, 헤더, 본문을 실어 보낼 수 있음
  • HttpStatus란?
    • HTTP 상태 코드를 관리하는 클래스. 다양한 Enum 타입과 관련한 메서드를 가짐
    • Enum 타입은 열거형으로 여러 상수로 이루어진 고정 집합을 가짐
    • 열거형이름. 상수 의 사용 형식을 가짐

 

  • ResponseEntity의 build() 메서드는
    • HTTP 응답의 body가 없는 ResponseEntity 객체를 생성
    • build() 메서드로 생성된 객체는 body(null)의 결과와 같음