- HTTP란? (Hypertext Transfer Protocol)
HTTP는 HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜(약속)이다.
HTTP는 웹에서 이루어지는 모든 데이터 교환의 기초이며, 클라이언트 · 서버 프로토콜이기도 하다.
클라이언트 · 서버 프로토콜이란?
(보통 웹브라우저인) 수신자 측에 의해 요청이 초기화되는 프로토콜을 의미.
=> 웹 상에서 통신을 할 때 어떤 형식(HTTP)으로 통신을 하자고 정해놓은 약속.
- HTTP Method란?
HTTP 메서드는 수행할 작업의 종류를 나타내기 위하여 서버에 보내는 메시지이다.
이러한 방법을 사용하면 브라우저와 서버 간의 더 풍부한 통신이 가능하다.
가장 일반적으로 사용되는 방법은 GET 및 POST.
1. GET Method
GET 메소드는 URL 매개변수를 사용하여 서버에 데이터를 요청한다.
웹에서 가장 일반적으로 사용되는 HTTP 방법.
GET 요청 매개변수는 이름-값 쌍으로 형식이 지정된다.
ex) www.google.com/search?q=nodejs
이 예에서는 쿼리 매개변수 q를 사용하여 노드js에 대한 결과를 가져오도록 Google에 지시.
이에 대한 응답으로 Google은 검색 결과가 포함된 페이지를 반환한다.
- GET 요청은 다음 사항들을 수행할 수 있다.
1. 서버에서 데이터 검색 - 일반적으로 웹 페이지.
2. 길이 제한이 있는 서버로 데이터 보내기.
3. 브라우저 기록에 남음.
4. 캐시가 됨.
- GET 요청은 다음 사항들을 수행할 수 없다.
1. 민감한 데이터(예: 비밀번호, 신용 카드 정보)를 처리.(url에 노출이 되기 때문)
2. 서버에서 데이터 수정.
2. POST Method
POST 메서드는 리소스(종종 데이터베이스 레코드)를 변경하기 위해 서버에 데이터를 보낸다.
(비밀번호, 사용자 이름 등)
POST 데이터는 사용자가 볼 수 없는 요청 본문으로 전송된다.
ex) POST / posts/1 HTTP/1.1
- POST 요청은 다음을 수행할 수 있다.
1. 리소스 데이터, 즉 서버의 데이터 수정.
2. 민감한 데이터를 처리하는데 사용.
3. 길이 제한 없이 데이터 보내기.
- POST 요청은 다음을 수행할 수 없다.
1. 캐시에 저장.
2. 브라우저 기록에 남기기.
3. PUT Method vs PATCH Method
- 공통점 : 둘 다 어떤 데이터를 수정하기 위하여 사용된다.
- 차이점
PUT : 데이터 전체 교체, 데이터 교체시 모든 필드 필요.
PATCH : 데이터의 부분 교체, 데이터 교체시 일부 필드 필요.
ex)
// user 정보
/users/1
{
"username" : "Johnahn",
"email" : "johnahn@naver.com
}
// 올바르게 이메일만 바꾸는 방법
PUT /users/1
// PUT은 데이터 전체를 교환하므로, email만 교체하려고 하더라도 usename까지 같이 넣어서 보내줘야 한다.
{
"username" : "johnahn",
"email" : "johnahn@gmail.com" // new email address
}
PATCH / users/1
// PATCH는 바꿀 데이터만 넣어서 보내주면 된다.
{
"email" : "johnahn@gmail.com" // new email adress
}
// 틀린 방법
GET /users/1
{
"username" : "johnagn",
"email" : "johnagn@gmail.com"
}
PUT /users/1
// PUT을 사용할 때 username을 빼고 보내버리면 username는 null 처리가 되게 된다.
{
"email" : "johnahn@gmail.com" // new email address
}
GET /users/1
{
"email" : "johnahn@gmail.com" // new email adrress... and nothing else!
}
'백엔드 > Node.js' 카테고리의 다른 글
웹 서버 생성하기 (0) | 2024.08.29 |
---|---|
HTTP Status Codes (0) | 2024.08.29 |
HTTP Request, Response 구조 (0) | 2024.08.29 |
Stateless Protocol (0) | 2024.08.29 |
1. 웹 서버란? (2) | 2024.08.28 |
github : https://github.com/dnjfht
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!