가장 기초적인 HTTP method인 get, post에 대해서도 제대로 알고 있지 못했었다.
그래서 대략적인 HTTP 통신을 정리하려고 한다.
HTTP란?
- HyperText Transfer Protocol의 약자로 W3 상에서 정보를 주고받을 수 있는 프로토콜이며, 주로 HTML 문서를 주고받는 데에 쓰임
- 80번 포트를 사용
- 클라이언트와 서버 사이에 이루어지는 요청/응답 프로토콜
HTTP 통신 방식
- 클라이언트와 서버 사이의 통신은 평문(ASCII) 메시지로 이루어진다.
- 클라이언트는 서버에게 요청메시지를 서버는 클라이언트에게 응답메시지를 보낸다.
HTTP method
GET, POST, DELETE, UPDATE를 많이 사용하며 그 외의 Method도 많이 존재한다.
GET
- 반드시 서버의 리소스를 요청할 때만 사용
- 요청 파라미터가 header에 추가됨
- 파라미터는 URL에 뒤에 querystring으로 붙음
- ASCII code가 아닌 파라미터일 경우에는 URLEncoding을 해야 함
- URL에 붙는 파라미터는 길이 제한이 있음
- 파라미터가 URL에 노출되므로 중요한 데이터를 보내지 않음(ex, 아이디, 비밀번호)
- 요청이 캐쉬됨
- 브라우저 히스토리에 남음
- 요청이 북마크가 될 수 있음
- 결코 민감한 데이터를 다룰 때는 사용되면 안 됨
POST
- 서버의 리소스를 생성하거나 수정할 때 사용되는 요청(POST가 수정일 때, UPDATE는 생성)
- 파라미터는 body에 담겨 요청
- 길이의 제한이 없음
- 민감한 데이터를 보낼 때 사용
- 파라미터를 URLEncoding 하지 않아도 됨
- 파일이나 바이너리 파일도 파라미터로 보낼 수 있음
- 요청이 캐쉬되지 않음
- 브라우저 히스토리로 남지 않음
- 요청이 북마크될 수 없음
DELETE
- 서버의 리소스를 삭제할 때 사용하는 요청 메소드
UPDATE
- 서버의 리소스를 수정할 때 사용되는 요청(POST가 수정으로 쓰이면 UPDATE 생성)
HTTP 상태 코드
코드 | 메시지 | 설명 | 예시 |
200 | Success | 성공적으로 요청에 대한 응답을 받음 | |
302 | Redirect | 요청을 처리하는 서버가 다른 uri로 요청을 넘김 | - 로그인하고 메인 페이지 이동 - 인증없는 요청일 경우 로그인 페이지로 이동 |
400 | Bad request | 요청에 필요한 파라미터가 누락 | 서버 개발할 때 자주 나타남 |
403 | Forbidden | 금지, 권한없이 서버 요청을 할 경우 | 일반 사용자가 관리자 리소스 요청 시 |
404 | Not found | 서버에 요청 리소스가 없을 경우 | |
429 | Too many request | 서버 리소스를 너무 많이 요청할 경우 | 설정하지 않을 경우는 발생하지 않으며 특히 인스타그램의 게시글을 빠른 시간에 자주 요청하면 자주 볼 수 있는 에러 코드 |
500 | Internal server error | 서버에서 요청을 처리하다 에러가 발생한 경우 | 런타임 에러 등 |
502 | Bad gateway | 게이트웨이 상태 나쁨, 서버가 게이트웨이 서버에 요청을 할 때 업스트림으로 불명확한 응답을 받게 되는 경우 |
|
503 | Service Unavailable | 외부 서비스가 죽었거나 현재 멈춘 상태 또는 이용할 수 없는 서비스 | 요청을 했는데 서버 리소스가 404인 경우 발생 |
504 | Gateway timeout | 프록시나 게이트웨이의 역할을 하는 서버에서 볼 수 있음. 초기 서버가 원격 서버로부터 응답을 받을 수 없음. (HTTP 1.1에서 새로 등장) | Nginx가 리버스 프록시하는 서비스가 재기동할 경우나 죽은 경우 |
HTTP 메시지 구성
header와 body로 구성
참고
'[개발] Info > 용어' 카테고리의 다른 글
gRPC (0) | 2023.10.22 |
---|---|
유니코드(Unicode) (0) | 2022.03.24 |
Locale (0) | 2018.03.25 |
Character Set과 인코딩 (0) | 2018.02.05 |
Appium (0) | 2018.01.28 |