본문 바로가기

React

React : HTTP, REST API

HTTP

HTTP  개념

  • HTTP(HyperText Transfer Protocol)는 웹 상에서 데이터를 주고받기 위한 프로토콜
    (프로토콜이란, 데이터 통신을 원할하게 하기 위해 필요한 통신 규약, 약속)
  • 클라이언트와 서버 간의 요청과 응답을 정의하며, 상태코드와 헤더를 포함한 다양한 요소를 가지고 있음
  • HTTP는 클라이언트-서버 모델을 기반으로 동작
  • 클라이언트가 요청을 보내면 서버가 응답을 반환하는 방식
  • 이러한 요청과 응답은 텍스트 기반의 메시지

HTTP  특징

  • 무상태성: HTTP는 상태를 유지하지 않음
    각 요청은 독립적이며, 이전 요청의 정보를 기억하지 않음 => 무상태(stateless)
  • 확장성: HTTP는 다양한 확장 헤더를 추가하여 기능을 확장 가능
  • 유연성: HTTP는 다양한 데이터 형식을 전송할 수 있음 => 텍스트, 이미지, 비디오 등 여러 형식을 지원

 

HTTP 메시지 구조 : HTTP 메시지는 요청(Request)과 응답(Response)으로 나눌 수 있음

요청 메시지 : 클라이언트가 서버로 데이터를 요청할 때 사용

  • 요청 라인: 메서드(요청의 종류 GET, POST, 등), URL, HTTP 버전
  • 헤더: 요청의 추가 정보(메타데이터)를 담고 있어요. 브라우저 정보, 인증 정보 
    HTTP의 무상태성 때문에 요청이 올 때마다 클라이언트가 누군지에 대한 정보 필요 => 헤더에다가 인증 정보 넣음
  • 본문: 선택적, 주로 POST 메서드에서 사용

 

응답 메시지: 서버가 클라이언트의 요청에 대한 응답을 보낼 때 사용

  • 상태 라인: HTTP 버전, 상태코드(200, 404, 등), 상태 메시지
  • 헤더: 응답의 추가 정보(메타데이터) ⇒ 콘텐츠 타입, 데이터 길이 등
  • 본문: 선택적, 주로 응답 데이터

HTTP 상태 코드

HTTP 상태 코드 서버 클라이언트 요청을 처리한 결과

상태코드는 세 자리 숫자로 구성되며, 첫 번째 자리에 따라 의미가 달라짐

  • 1xx : 정보
  • 2xx : 성공
    200 => 요청이 성공적으로 처리, 201 => 요청이 성공 & 새로운 자원 생성
  • 3xx : 리다이렉션
  • 4xx : 클라이언트 오류
    400 => 잘못된 요청, 401 => 인증이 필요, 404 => 요청한 리로스를 찾을 수 없음
  • 5xx : 서버 오류
    500 => 서버가 요청을 처리하는 동안 오류 발생, 502 => 서버가 게이트웨이, 프록시로부터 유효하지 않은 응답을 받음

HTTP 메서드 및 Rest API

HTTP 메서드는 클라이언트가 서버에게 요청의 성격을 알리는  사용

Rest API는 이러한 HTTP 메서드를 사용하여 CRUD 작업 수행

HTTP 메서드와 URL의 조합으로 요청에 대한 응답을 서버에서 제공

  • GET : 서버로부터  데이터를 요청할 때 사용, 요청 데이터가 URL에 포함되어 전송
    REST API에서의 사용: 특정 리소스를 조회할 때 사용됩니다.

  • POST : 서버에 데이터를 제출할 때 사용, 요청 데이터가 본문에 포함되어 전송
    REST API에서의 사용: 새로운 리소스를 생성할 때 사용

  • PUT, PATCH : 서버의 데이터를 업데이트 할 때 사용, 요청 데이터가 본문에 포함되어 전송
    REST API에서의 사용: 기존 리소스를 수정할 때 사용

  • DELETE : 서버의 데이터를 삭제할 때 사용
    REST API에서의 사용: 특정 리소스를 삭제할 때 사용

RESTful 원칙에 따라 작성된 API 명세서

RESTful 하다 : 메서드와 URL 만으로 어떤 종류의 요청인지 추측이 가능

1 게시글을 추가 POST /posts
2 모든 게시글 조회 GET /posts
3 특정 게시글 조회 GET /posts/:id
4 특정 게시글 정보 업데이트 PUT /posts/:id
5 특정 게시글 정보 일부 수정 PATCH /posts/:id
6 특정 게시글 정보 삭제 DELETE /posts/:id

 

'React' 카테고리의 다른 글

React : json-server  (0) 2024.06.10
React : REST API 예시  (0) 2024.06.10
React: 비동기 프로그래밍  (0) 2024.06.10
React: Supabase  (0) 2024.05.22
React: Router DOM - 2 Dynamic Route, useParams, Outlet  (0) 2024.05.22