HTTP 메서드는 클라이언트가 웹 서버에게 요청의 목적이나 종류를 알리는 수단이다.
여러가지 메서드가 존재하지만 대표적으로
GET, POST, PUT, DELETE 를 가장 많이 사용한다.
HTTP 이란?
HTTP(Hypertext Transfer Protocol)는 웹을 개발하는 사람이라면
기본적으로 알아야 하는 통신 프로토콜이다.
프로토콜이란 상호 간에 정의한 규칙을 의미하며 데이터를 주고받기 위해 정의되었다.
브라우저에서 서버에 URL + HTTP 메서드(GET, POST, PUT, DELETE)를 Request 하면,
서버는 상태 코드 + 응답 Body를 Response 해준다.
⦁ HTTP 프로토콜 특징
HTTP 프로토콜은 상태가 없는 (Stateless) 프로토콜이다.
상태가 없다는 말은 각각의 데이터 요청이 독립적으로 관리가 된다는 뜻이다.
즉, 이전 데이터 요청과 다음 데이터 요청이 서로 관련이 없다는 말이다.
이러한 특징 덕분에 서버는 세션과 같은 별도의 추가 정보를 관리하지 않아도 되고,
다수의 요청 처리 및 서버의 부하를 줄일 수 있는 성능 상의 이점이 생긴다.
HTTP 프로토콜은 일반적으로 TCP/IP 통신 위에서 동작하며 기본 포트는 80번이다.
URL
URL(Uniform Resource Locators)는 서버에 자원을 요청하기 위한 주소다.
⦁ REST API
로이 필딩은 HTTP의 주요 저자 중 한 사람으로 그 당시 웹(HTTP) 설계의 우수성에 비해 제대로 사용되어지지 못하는 모습에 안타까워하며 웹의 장점을 최대한 활용할 수 있는 아키텍처로써 REST를 발표했다고 합니다.
REST의 구체적인 개념 HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미합니다.
RESTFUL이란 REST의 원리를 따르는 시스템을 의미한다.
하지만 REST를 사용했다 하여 모두가 RESTful 한 것은 아니다.
REST API의 설계 규칙을 올바르게 지킨 시스템을 RESTful하다고 말할 수 있다.
따라서, node Express, Flask 등으로 웹 서버를 개발할 경우 각각의 URL을 최대한
RESTful하게 설계 하는 것이 중요하다.
HTTP 메서드 종류
⦁ GET : 존재하는 자원에 대한요청
GET /user/1
⦁ POST : 새로운 자원을 생성
⦁ PUT vs. POST
⦁ PUT은 서버의 Resource에 Data를 저장하기 위한 용도
⦁ POST는 서버에 DATA를 보내기 위한 용도
POST /user
body : {date : "example"}
Content-Type : "application/json"
⦁ PUT : 존재하는 자원에 대한 변경
⦁ PUT 메소드는 서버가 Client 요청의 Body를 확인한다.
⦁ 요청된 URL에 정의된 새로운 Resource를 생성하기 위함
⦁ 요청된 URL이 존재할 경우 대체하여 사용
PUT /user/1
body : {date : "update example"}
Content-Type : "application/json"
⦁ DELETE : 존재하는 자원에 대한 삭제
DELETE /user/1
HTTP 상태 코드 (Status Code)
브라우저에서 요청을 보냈을 때 서버는 데이터와 함께 상태 코드를 응답해준다.
모든 HTTP 응답 코드는 5개의 클래스로 구분된다. 상태 코드의 첫 번째 숫자는 응답의 클래스를 정의한다.
- 1xx (정보): 요청을 받았으며 프로세스를 계속한다
- 2xx (성공): 요청을 성공적으로 받았으며 인식했고 수용하였다
- 3xx (리다이렉션): 요청 완료를 위해 추가 작업 조치가 필요하다
- 4xx (클라이언트 오류): 요청의 문법이 잘못되었거나 요청을 처리할 수 없다
- 5xx (서버 오류): 서버가 명백히 유효한 요청에 대해 충족을 실패했다
프론트엔드 개발자는 이 상태 코드로 에러를 처리할 수 있기 때문에 잘 알아두어야 한다.
흔히 볼 수 있는 404 (Not Found, 찾을 수 없음) 에러가 대표적이다.
웹 개발자로서 꼭 알아야 되는 HTTP에 대해 알아보았다.
간단한 웹 서버 개발을 해본 적이 있지만 기본을 제대로 공부하지 않고
개발한 것 같다. 기초를 잘 다져두자 !
니꼬 선생님의 5분만에 제대로 설계하는 REST API 강의를 추천한다.
https://www.youtube.com/watch?v=4DxHX95Lq2U
참고 문헌 :
https://medium.com/@lyhlg0201/http-method-d561b77df7
'CS 지식' 카테고리의 다른 글
[네트워크] 브라우저 주소창에 URL을 입력 시 일어나는 일 정리 (DNS) (0) | 2023.12.04 |
---|---|
[Web] 쿠키, 세션, 토큰(jwt) 인증 방식 정리 (0) | 2022.09.13 |
절대경로와 상대경로 정리 (0) | 2022.09.05 |
[네트워크] OSI 7계층 정리 ( 전송 단위, 장비, 프로토콜 ) (0) | 2022.09.04 |