상태가 없는 stateless 프로토콜이다 쉽게 말하면 이전 데이터 요청과 다음 데이터 요청이 서로 관련이 없다는 뜻
stateful : server side에 client와 server의 동작, 상태 정보를 저장하는 형태로 세션 상태에 기반하여 server의 응답이 달라진다. 대표적인 예로 TCP 통신이 있다.
stateless : serverside에 client와 server의 동작, 상태정보를 저장하지 않는 형태로 server의 응답이 client와의 세션 상태와 독립적임 대표적인 예로 UDP 통신이 있다
일반적으로 80포트를 사용해서 통신한다
클라이언트가 웹서버에게 요청하는 목적 및 그 종류를 알리는 수단
URL(URI) 형식으로 서버에 데이터를 요청한다.
?로 URL과 보낼 데이터를 구분하고 &로 각각의 데이터들을 구분한다. 각각의 데이터와 그에 해당하는 값은 =로 구분한다.
예시) GET http://localhost:8000/post?id=1&category=game HTTP/1.0
주소창에 사용자가 입력한 정보가 그대로 노출된다
이미지, 동영상 같은 바이너리 파일의 데이터를 보내고 싶어도 URI나 헤더가 너무 커져서 웹서버에서 처리할 수 없기 때문에 보낼수가 없다 (그래서 POST를 사용)
GET메서드와 달리 body에 보내고 싶은 정보를 넣어 서버에 데이터를 전송한다.
body는 요청헤더 다음 한줄을 비우고 그다음에 위치한다. PUT과 DELETE를 POST로 구현이 가능하다
예시) POST http://localhost:8000/post HTTP/1.0
...
Content-Length: 18 ← 보내는 데이터의 길이
...
Content-Type: application/x-www-form-urlencoded ← 보내는 데이터의 타입
...
id=1&category=game ← 보내고 싶은 데이터
보내는 데이터가 바이너리 데이터일때 그안에 '='나 '&'가 포함될 수 있는데 이게 문제를 발생시킬 수 있다. 이에 대한 해결책으로 멀티파트 인코딩 방법을 사용한다
상태코드 | 이름 | 의미 |
---|---|---|
200 | OK | GET 요청 성공 |
201 | Create | POST로 생성 성공 |
202 | Accepted | 요청 접수O, 리소스 처리X |
204 | No Contents | 요청 성공, 표시할 내용 없음 |
상태코드 | 이름 | 의미 |
---|---|---|
300 | Multiple Choice | 요청한 URI에 여러 리소스가 존재함 |
301 | Move Permanently | 요청한 URI가 새 위치로 영구적으로 이동했다(GET 또는 HEAD 요청에 대한 응답) |
304 | Not Modified | 마지막 요청 이후 요청한 페이지가 수정된적이 없음 |
상태코드 | 이름 | 의미 |
---|---|---|
400 | Bad Request | 서버가 요청 구문을 인식하지 못함 |
401 | Unauthorized | 인증 오류 |
403 | Forbidden | 권한이 없는 리소스를 요청하고 있다 |
404 | Not Found | 요청한 리소스를 못찾겠다 |
405 | Method Not Allowed | API에서 정의되지 않은 메서드를 호출 |
406 | Not Acceptable | 요청한 페이지가 요청한 콘텐츠 특성으로 응답할 수 없음 |
408 | Request Timeout | 요청 대기시간 초과 |
409 | Conflict | 서버가 요청을 수행하는 중에 충돌이 발생했음 |
429 | Too Many Request | 요청 횟수 상한 초과 |
상태코드 | 이름 | 의미 |
---|---|---|
500 | Internal Server Error | 서버 내부 오류 |
502 | Bad Gateway | 게이트웨ㅔ이 오류 |
503 | Service Unavailable | 서비스 이용 불가 |
504 | Gateway Timeout | 게이트웨이 시간 초과 |
HTTP GET 메소드와 POST 메소드 비교
HTTP 메서드
HTTP 메서드 간략 설명
상태코드(Gyoogle)
상태코드(위키피디아)
Stateful, Stateless
HTTP메서드랑 특징, 상태코드
HTTP프로토콜 버전별 비교