■ HTTP ( HyperText Transfer Protocol )
: 클라이언트와 서버 사이에 이루어지는 요청/응답(request/response) 프로토콜
- 주로 HTML 문서를 주고받는 데에 쓰임
- 주로 TCP를 사용
- HTTP를 통해 전달되는 자료는 http:로 시작하는 URL(인터넷 주소)로 조회할 수 있음
< 메시지 포맷 >
- 클라이언트와 서버 사이의 소통은 평문(ASCII) 메시지로 이루어짐
- 클라이언트는 서버로 요청메시지를 전달하며 서버는 응답메시지를 보낸다.
* 요청 메시지
┌ 요청 내용 -- Method, Path, Version of the protocol
├ 헤더
├ 빈 줄 ( empty line )
└ 기타 메시지
- 요청 내용과 헤더 필드는 ‘<CR><LF>’로 끝나야 함 ( Carriage Return, Line Feed )
- 빈 줄(empty line)은 <CR><LF>로 구성되며 그 외 다른 화이트스페이스(whitespace)가 있어서는 안 됨
GET /restapi/v1.0 HTTP/1.1
Accept : application/json
Authorization : Bearer UExBMDFUMDRQV1MwMnzpdvtYYNWMSJ7CL8h0zM6q6a9ntw
* 응답 메시지
┌ 상태표시 행 ( status line ) -- Version of the protocol, Status code, Reason message
├ 응답 헤더필드 ( ex) Content-Type: text/html )
├ 빈 줄 ( empty line )
└ 기타 메시지
HTTP/1.1 200 OK
Date : Mon, 23 May 2005 22:38:34 GMT
Content-Type : text/html; charset=UTF-8
Content-Encoding : UTF-8
Content-Length : 138
Last-Modified : Wed, 08 Jan 2003 23:11:55 GMT
Server : Apache/1.3.3.7 (Unix) (Red-Hat/Linux)
ETag : "3f80f-1b6-3e1cb03b"
Accept-Ranges : bytes
Connection : close
<html>
<head>
<title>An Example Page</title>
</head>
<body>
Hello World, this is a very simple HTML document.
</body>
</html>
< HTTP 방식( 메소드 ) >
- GET : 지정된 리소스( URI )에서 데이터를 요청하는 데 사용 ( Retrieves a resource )
- 쿼리 문자열( 이름 / 값 쌍 )은 GET 요청의 URL로 전송됨
ex) /test/demo_form.php?name1=value1&name2=value2
- GET 요청을 캐시 할 수 있음
- GET 요청은 브라우저 기록에 남아 있음
- GET 요청을 북마크 할 수 있음
- 민감한 데이터를 처리 할 때 GET 요청을 사용해서는 안 됨
- GET 요청에는 데이터 길이에 제한이 있음
- GET 요청은 데이터를 요청하는 데만 사용 됨 (수정하지 않음).
- 데이터가 헤더에 포함되어 전달
- URL에 데이터가 노출됨 ( URL에 변수를 포함시켜 요청 )
- POST : 리소스를 생성/업데이트하기 위해 서버로 데이터를 보내는 데 사용 ( Creates a resource )
- POST를 통해 서버로 전송 된 데이터는 HTTP 요청의 요청 본문에 저장
ex) POST /test/demo_form.php HTTP/1.1Host: w3schools.comname1=value1&name2=value2
- POST 요청은 캐시 되지 않음
- POST 요청은 브라우저 기록에 남아 있지 않음
- POST 요청은 북마크 할 수 없음
- POST 요청은 데이터 길이에 제한이 없음
- 데이터가 본문에 포함되어 전달
- URL에 데이터가 노출되지 않음
- HEAD : 지정된 리소스( URI )에서 데이터를 요청하는 데 사용
- GET 메서드의 요청과 동일한 응답을 요구하지만, 응답 본문을 포함하지 않습니다.
- PUT : 리소스를 생성 / 업데이트하기 위해 서버로 데이터를 보내는 데 사용
( Updates an existing resource. Does not create the resource if it does not exist )
- POST와 PUT의 차이점은 PUT 요청이 멱등하다는 것
- 동일한 PUT 요청을 여러 번 호출하면 항상 동일한 결과가 생성됨
- 목적 리소스 모든 현재 표시를 요청 payload로 바꿉니다.
- DELETE : 특정 리소스를 삭제 ( Deletes a resource )
- CONNECT : 목적 리소스로 식별되는 서버로의 터널을 맺음
- OPTIONS : 목적 리소스의 통신을 설정하는 데 쓰임
- PATCH : 리소스의 부분만을 수정하는 데 쓰임
참고
https://ko.wikipedia.org/wiki/HTTP
https://developer.mozilla.org/ko/docs/Web/HTTP/Methods
https://www.w3schools.com/tags/ref_httpmethods.asp
'웹 개발 ( Web Development ) > 백엔드 ( Back-end )' 카테고리의 다른 글
[Spring] MVC project (0) | 2021.07.06 |
---|---|
[WEB] URL & URI (0) | 2021.07.05 |
[WEB] MVC - Model ( VO, DTO, DAO ) (0) | 2021.07.05 |
[WEB] MVC pattern (0) | 2021.05.12 |
[MyBatis] SQL insert 시 주 키 리턴하기 (0) | 2021.05.11 |