1. HTTP 요청 메소드란?
클라이언트가 웹 서버에게 사용자 요청의 목적/종류를 알리는 수단
2. HTTP 요청 메소드 종류
GET
- 리소스 취득
- URL(URI) 형식으로 웹서버측 리소스(데이터)를 요청
- Conditional GET (웹브라우저의 캐싱 기능에 도움을 줌)
=> 최초 리소스를 요청할 때는 요청만 하고, 이후 요청 때는 첫 요청의 응답에 함께 온
HTTP 헤더 정보를 참고하여, 변경사항이 있는지 물어보는 GET
=> 캐싱에 중요한 HTTP 헤더 정보 : Last-Modified, eTag 등
HEAD
-메세지 헤더(문서 정보) 취득
- GET과 비슷하나, 실제 문서를 요청하는 것이 아니라, 문서 정보를 요청
=> 이에따라 HTTP 응답 메세지에 본문(Body)이 없이 HTTP 헤더 정보 만을 보냄
POST
- 내용 전송(파일 전송 가능)
- 클라이언트에서 서버로 어떤 정보를 제출함
=> 요청 데이터를 HTTP 바디에 담아 웹 서버로 전송
- 만일, 리소스가 새로 작성되면, 서버측은 HTTP 헤더 항목 중 'Location:' 에다가 새로 작성된 리소스에 대한 URI 주소 정보를 포함시켜 응답
PUT
- 내용 갱신 위주 (파일 전송 가능)
- POST 처럼 정보를 서버로 제출하는 것으로 형식은 동일하나, 갱신 위주
=> 이에 의해 갱신된 리소스에 대한 주소 정보를, POST와는 달리 서버측 응답메세지의 HTTP 헤더 항목 중에 'Location:'을 보내지 않아도 됨. 즉, 서버측은 클라이언트 측이 제시한 URI를 그대로 사용하는 것으로 간주
- PUT는 클라이언트측이 서버측 구현에 관여하는 것이므로 통상 보다 세밀한 POST를 더 많이 씀
DELETE
- 파일 삭제
- 웹 리소스를 제거
OPTIONS
- 웹서버측 제공 메소드에 대한 질의
- 가능한 메소드 옵션에 대한 질의
=> 이 경우 응답메세지에 HTTP 헤더 항목 중 'Allow: GET, POST, HEAD'처럼 보내게 됨
TRACE
- 거의 사용 안함
- 요청 리소스가 수신되는 경로를 보여줌
CONNECT
- 거의 사용 안함
- 프락시 서버와 같은 중간 서버 경우
ex) 웹브라우저는 'CONNECT www.kistone_server.com:80 HTTP/1.0'뒤에, .. 일련의 HTTP 헤더 항목들과 빈 줄(CRLF)로써 프록시 서버에게, .. 원하는 웹서버와의 중계 연결 요청을 함
※ 보안상의 이유로, 웹서버가 GET, POST 2개 또는 OPTIONS 포함 3개만을 허용하는 경우가 대부분!
3. GET 방식과 POST 방식의 특징
GET | POST |
URL에 변수(데이터)를 포함시켜 요청 | URL에 변수(데이터)를 노출하지 않고 요청 |
데이터를 Header(헤더)에 포함하여 전송 | 데이터를 Body(바디)에 포함 |
URL에 데이터가 노출되어 보안에 취약 | URL에 데이터가 노출되지 않아서 기본 보안 |
전송하는 길이에 제한 有 | 전송하는 길이에 제한 無 |
캐싱할 수 있음(O) | 캐싱할 수 없음 (X) |
출처
http://www.ktword.co.kr/abbr_view.php?m_temp1=3791
https://mangkyu.tistory.com/17
'기술면접대비' 카테고리의 다른 글
[JAVA] 클래스/객체/인스턴스 (0) | 2020.08.25 |
---|---|
[JAVA]오버로딩(Overloading) / 오버라이딩(Overriding) (0) | 2020.08.24 |
[JAVA] StringTokenizer와 String split() 차이 (0) | 2020.08.21 |
[Web] REST, REST API, RESTFUL의 모든것 (0) | 2020.08.19 |
[JAVA] String의 hashCode, ==, equals (0) | 2020.08.14 |