본문 바로가기
CS/Network

[네트워크] HTTP Request/Response

by 테리는당근을좋아해 2020. 6. 26.

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(내부 서버 오류)

 

 

 

 

댓글