HTTP는 HyperText Transfer Protocol의 줄임말로 웹 상의 브라우저(Client)와 서버(Server)가 데이터를 주고받을때 사용하는 Protocol이다. 이름에 HyperText가 들어가있지만 텍스트뿐만 아니라 미디어등의 데이터도 전송이 가능하다.
Request & Response
HTTP
통신은 Client
의 요청(Request
)와 그에 대한 Server
의 응답(Response
)로 이루어져있다.
지금 Velog에서 글을 쓰는것 또한 내가 Velog에 서버로보내는 Request이다.
TCP/IP 통신 위에서 동작
TCP/IP정리 참고
TCP/IP 통신 위에서 동작하며80
번 포트를 사용한다.
어떤 종류의 데이터라도 전송이 가능하다.
텍스트
,이미지
,오디오
등의 미디어 데이터도 전송이 가능하다.
비연결성
은 Request
에대한 Response
를 받으면 그 연결을 끊어버리는 것을 의미한다.Client
에서 오는 요청도 계속해서 연결/해제 해야한다는 단점이 존재한다. 비연결성
의 특징을 가지기 때문에 Server
는 Client
를 식별하지 못한다.따라서 같은
Client
에서Request
를 보내더라도 그 요청은 독립적으로 시행된다.
HTTP
를 이용하여 Client
에서 Server
로 Requset
를 보낼때 어떠한 목적
으로 Request
를 하는것인지 정의를 내릴 수 있다.(HTTP Method)
주요 메소드는 아래와 같다.
GET
: 서버가 데이터를 달라는 요청을 할 때 사용POST
: 서버에게 데이터를 전송하는 요청을 할 때 사용PUT
: 서버에서 요청 URI
의 데이터를 수정하거나 새로 추가 하도록 요청 할 때 사용PATCH
: 서버의 데이터를 일부
수정할 때 사용DELETE
: 서버의 요청 URI
의 데이터를 삭제하도록 요청 할 때 사용서버
가 응답
을 전송할 때 같이 전송하는 코드를 의미한다.
3자리숫자로 이루어져 있으며 요청에 대한 서버의 상태를 나타내준다.
앞자리는 1~5의 숫자 중 하나이며 이 중 4와 5는
비정상적인 상황, 즉 Error를 의미한다.
1XX
: 정보 응답100
Continue : 요청이 진행중이고 문제가 없다. 2XX
: 성공 응답200 OK
: 요청이 성공적으로 완료됨.201 Created
: Create Complete 보통 POST, PUT요청 뒤에 온다. 3XX
: 리다이렉션 메시지300 Multiple Choice
: 요청에 대해 하나 이상의 응답이 가능함.301 Moved Permanetly
: 요청한 리소스의 URI가 변경됨.4XX
: Client Error400 Bad Request
: 잘못된 문법401 Unauthorized
: 인증되지 않은 클라이언트 요청403 Forbidden
: 클라이언트가 리소스에 접근할 권리가 없음404 Not Found
: 클라이언트가 요청한 리소스가 서버에서 찾을수 없음.408 Request Timeout
: 요청 중 시간이 초과5XX
: Server Error500 Internal Server Error
: 서버에러를 처리 불가능502 Bad Gateway
: 서버가 게이트웨이로부터 잘못된 응답을 받음.503 Service Temporarily Unavailable
: 일시적으로 서버 사용불가능 (보통 점검상황 이거나 과부하로 인한 다운)504 Gateway Timeout
: 서버가 게이트웨이의 역할을 하고있으며 다른 서버로부터 응답을 받지못함.웹에서의 중요한 API는 결국 HTTP의 Requset와 Response를 어떻게 조절하냐에 달려있는거같다.
어떤 언어를쓰든, 어떤 프레임워크를 쓰던 기본이 제일중요
참조한곳
HTTP
MDN HTTP 문서