Open DaeAkin opened 4 years ago
HyperText Transfer Protocol
하이퍼텍스트(HTML)문서를 교환하기 위해 만들어진 protocol(통신규약)
프론트-클라이언트 / 백앤드 - 프론트 서버간의 통신에도 사용된다.
TCP/IP기반
요청/응답(request/response)구조
클라이언트가 HTTP request를 서버에 보내면 서버는 HTTP response를 보내는 구조. 클라이언트와 서버의 모든 통신이 요청과 응답으로 이루어 진다.
Stateless
즉, 요청이 오면 그에 응답을 할뿐, 여러 요청/응답 끼리 연결되어 있지 않다는 뜻이다. 즉 각각의 요청/응답은 독립적인 요청/응답 이다. 예를 들어, 클라이언트가 요청을 보내고 응답을 받은 후, 조금 있다 다시 요청을 보낼 때, 전에 보낸 요청/응답에 대해 알지 못한다는 뜻이다. 그래서 만일 여러 요청과 응답의 진행과정이나 데이터가 필요할때는 쿠키나 세션 등등을 사용하게 된다.
start line
GET /search HTTP/1.1
해당 request가 의도한 action을 정의하는 부분 HTTP Methods에는 GET, POST, PUT, DELETE, OPTIONS 등등이 있다 주로 GET 과 POST과 쓰임
Request target 해당 request가 전송되는 목표 URI 예를 들어 /login
HTTP Version 말 그대로 사용되는 HTTP 버젼. 버젼에는 1.0, 1.1, 2.0 등이 있다
headers
Accept: */*
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Type: application/json
Content-Length: 257
Host: google.com
User-Agent: HTTPie/0.9.3
body
해당 reqeust의 실제 메세지/내용 Body가 없는 request도 많다 예를 들어, GET request들은 대부분 body가 없는 경우가 많음
Response도 Request와 마찬가지로 3부분으로 구성됨
Status line
HTTP/1.1 404 Not Found
Headers
Body
GET
서버에게 Resource를 보내도록 요청하는데 사용(서버의 Resource를 읽음)
HEAD
GET과 동일하지만 서버에서 Body를 리턴하지 않음
PUT
서버에 문서를 쓸 때 사용(GET과 반대)
PATCH
PUT과 유사하게 요청된 자원을 수정함
PUT은 자원 전체를 갱신하지만, PATCH는 해당자원의 일부를 교체함
POST
Server에 Input Data를 보내기 위해 사용(HTML form에 많이 사용)
TRACE
Client로 부터 Request Packet이 방화벽, Proxy Server, Gateway등 을 거치면서 패킷의 변조가 일어날 수 있는데, 이 때 Server에 도달했을 때의 최종 패킷의 Request Packet을 볼 수 있다.
OPTION
Target Server의 지원 가능한 메소드를 알아보기 위해 사용
DELETE
요청 Resource를 삭제하도록 요청
응답 대역 | 응답 코드 | 내용 |
---|---|---|
정보전송 / 임시응답 | 1XX | 요청을 받았으며 프로세스를 계속 진행함 |
성공 | 2XX | 요청을 성공적으로 수신, 처리했음 |
리다이렉션 | 3XX | 요청 완료를 위한 추가 작업 조치가 필요함 |
클라이언트 요청 에러 | 4XX | 요청의 문법이 잘못되었거나 요청을 처리할 수 없음 |
서버 에러 | 5XX | 서버가 요청을 수행하지 못했음 |
HTTP 응답코드에 대해서도 정리 부탁해용 ex) 400번대 응답코드는 뭘 의미하는건지. 1XX : 2XX : 3XX : 4XX : 5XX :
HTTP 메소드의 PATCH에 관련된 문서가 빠져있네요 작성부탁해용
추가하였씁니당
GET POST PUT DELETE PATCH
헤더 리퀘스트바디 등등.