서버 - 클라이언트 모델을 따르면서 request/response 구조로 웹 상에서 정보를 주고 받을 수 있는 프로토콜
TCP/IP 기반으로 작동, 가장 큰 특징은 Connectionless와 Stateless
서버에 연결 후 요청에 응답을 받으면 연결 해제
-> 많은 사람이 웹을 이용하더라도 실제 동시 접속을 최소화하여 더 많은 유저의 요청 처리
연결을 끊었기 때문에, 클라이언트의 이전 상태(로그인 유무 등)을 알 수 없음
HTTP의 단점을 해결하기 위해 cookie, session, jwt 등이 도입
HTTP는 정보를 text 형식으로 주고 받기 때문에 중간에 인터셉트 할 경우 데이터 유출이 발생 할 수 있는 문제가 있어서 이를 해결하고자 HTTP에 암호화를 추가
<HTTP request message 예시>
<HTTP response message 예시>
// Server resource
// Before
user/10
{
name: Noname,
language: C++
}
// Request
PUT user/10
{
name: Nossi,
}
// After
user/10
{
name: Nossi,
}
// Server resource
// Before
user/10
{
name: Noname,
language: C++
}
// Request
PATCH user/10
{
name: Nossi
}
// After
PATCH user/10
{
name: Nossi,
language: C++
}
웹 개발 시 서버와 클라이언트가 HTTP 통신할 때 주고 받아야 할 값중에 하나, 클라이언트로 부터 받은 request에 대한 서버의 response에 간략한 설명
status code | message | |
---|---|---|
200 | OK | 요청이 성공함 (ex. 잔액조회 성공) |
201 | Created | 리소스 생성 성공 (ex. 게시글 작성 성공, 회원가입 성공) |
400 | Bad Request | 데이터의 형식이 올바르지 않는 등 서버가 요청을 이해할 수 없음 |
(ex. 올바르지 않은 형식의 데이터 입력 등) | ||
401 | Unauthorized | 인증되지 않은 상태에서 인증이 필요한 리소스에 접근함 |
(ex. 로그인 전에 사용자 정보 요청 등) | ||
403 | Forbidden | 인증된 상태에서 권한이 없는 리소스에 접근함 |
(ex. 일반 유저가 관리자 메뉴 접근 등) | ||
404 | Not Found | 요청한 route가 없음. 찾는 리소스가 없음 |
(ex. www.naver.com/nossi 등 존재하지 않는 route에 요청 등) | ||
502 | Bad Gateway | 서버에서 예상하지 못한 에러가 발생함 |
(ex. 예외처리를 하지 않은 오류가 발생 등) |