[WEB] HTTP

728x90

 

■  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 )

     -   POSTPUT의 차이점은 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