HTTP Request Method
- 클라이언트가 웹 서버에 사용자 요청의 목적/종류를 알리는 수단
1) HEAD
- 메시지 헤더(문서 정보) 획득
- GET과 유사한 방식이지만, 실제 문서를 요청하는 것이 아닌 문서 정보를 요청
- HTTP 응답 메시지로 body없이 HTTP 헤더 정보만 전송
2) GET
- URL 형식으로 웹 서버 측 리소스 요청
- 파라미터를 넘겨 해당하는 본문 형식을 요청
- 멱등성 O
3) POST
- 웹 서버로 요청된 자원의 삽입 목적
- 요청된 자원 생성
- 멱등성 X
4) PUT
- 웹 서버로 요청된 자원의 갱신 목적
- 요청된 리소스의 전체를 갱신
- 멱등성 O
5) PATCH
- 웹 서버로 요청된 자원의 갱신 목적
- 요청된 리소스의 일부를 갱신
- 멱등성 X
6) DELETE
- 웹 서버로 요청된 자원의 삭제 목적
- 요청된 자원 삭제
7) OPTION
- 웹 서버측에서 제공하는 메소드에 대한 질의
- 응답 헤더 항목 중 'Allow : 메소드' 형식으로 응답
8) TRACE
- 요청되는 리소스의 수신 경로
- 원격지 서버에 루프백 메시지 호출을 위해 테스트 용으로 사용
9) CONNECT
- 요청한 리소스에 대해 양방향 연결 요청
- 프록시 서버와 같은 중간 서버 경유
- 클라이언트는 원하는 목적지와 TCP 연결을 HTTP 프록시 서버에 요청
- 서버는 클라이언트를 대신해 연결을 생성
- 한번 서버에 의해 연결이 수립되면, 프록시 서버는 클라이언트에 오고가는 TCP 스트림을 계속해서 프록시함
! 멱등성(Idempotent)
- 같은 메소드를 여러 번 반복해서 실행해도 같은 결과가 나오는 것
GET과 POST
HTTP 프토토콜을 이용해 서버에 데이터를 전달할 때 사용하는 메소드
1) GET Method
- 정보를 조회하기 위한 메소드
(1) 전달 형태
- URL 끝에 '?'가 붙고, 요청 정보가 key=value 형태의 쌍으로 이루어 ?뒤에 이어붙여 서버로 전송
- 요청 정보가 여러개일 경우, '&'로 구분
(2) 특징
- URL에 요청 정보를 붙여서 전송
- URL에 요청 정보가 이어붙기 때문에 길이제한이 있음
- URL에 요청 정보가 노출되기 때문에 보안이 취약
- HTTP 패킷의 Body는 비어있는 상태로 전송
- POST 방식보다 빠름
- 캐싱 가능
2) POST Method
- 서버의 값이나 상태를 바꾸기 위한 용도
(1) 전달 형태
- 요청 정보를 HTTP 패킷의 Body 안에 담아 서버로 전송
- Reqeust Header의 Content-type에 해당 데이터 타입이 표현되며, 전송하고자 하는 데이터의 타입을 명시해야함
(2) 특징
- Body 안에 숨겨서 요청 정보를 전송하기 때문에 보안에 안전
- 클라이언트 측에서 데이터를 인코딩해 서버로 전송하고, 서버는 해당 데이터를 디코딩
- Body 안에 담기 때문에 GET Method보다 대용량의 데이터 전송에 적합
! 조회에 POST가 아닌 GET 방식을 사용하는 이유
(1) 설계 원칙에 따라 GET Method는 서버에 여러 번 요청을 하더라도 동일한 응답이 돌아와야함(멱등성)
- GET Method는 조회를 목적으로 서버의 데이터나 상태를 변경시키지 않아야함
- POST Method는 서버의 값이나 상태를 바꾸기 위한 용도
(2) 웹에서 모든 리소스는 Link할 수 있는 URL을 가지고 있어야 함
- URL을 Copy and Paste 했을 때, 해당 페이지로 접속 가능해야 함
- POST Method는 링크의 정보가 Body 안에 담겨있기 때문에 해당 페이지로 접속 불가능
! GET 요청 시 해당 데이터를 Body 담아 전송하는 경우
- 서버가 어떤 식으로 대처하냐에 따라 다름
(1) 무시하는 경우
HTTP 원칙을 준수
(2) 예외를 던지는 경우
코드가 잘못되었을 때, 개발자가 인식 가능
(3) POST 처리
POST와 PUT
1) POST
- 서버에 요청된 데이터의 삽입 목적
- 멱등성 X
2) PUT
- 서버에 요청된 데이터의 갱신 목적
- 멱등성 O
PUT과 PATCH
1) PUT
- 서버에 요청된 데이터의 전체를 갱신하기 위한 목적
- 멱등성 O
2) PATCH
- 서버에 요청된 데이터의 일부를 갱신하기 위한 목적
- 멱등성 X
HTTP 응답 코드
응답대역 | 응답코드 | 예 |
정보전송 임시 응답 | 1XX | |
성공 | 2XX | 200 : OK(요청이 성공적으로 수행) 201 : Created(PUT 메소드에 의해 원격지 서버에 파일 생성) |
리다이렉션 | 3XX | |
클라이언트 요청 에러 |
401 : Unauthorized(인증이 필요한 페이지 요청 시) 404 : Not found(요청한 페이지 없음) 405 : Method not allowed(허용되지 않은 http method 사용 시) |
|
서버 에러 | 5XX | 500 : Internal server error(내부 서버 오류) |
'CS > Network' 카테고리의 다른 글
[네트워크] 흐름 제어(Flow Control) (0) | 2020.06.26 |
---|---|
[네트워크] 오류 제어(Error Control) (0) | 2020.06.26 |
[네트워크] HTTP 요청/응답 헤더 (0) | 2020.06.26 |
[네트워크] HTTP와 HTTPS (0) | 2020.06.24 |
[네트워크] TCP(Transport Control Protocol) (0) | 2020.06.24 |
댓글