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 |