카테고리 없음

HTTP

heejunn 2022. 4. 10. 12:16

http 란 ?

우리는 어떠한 방법을 통해서 소통을 하고있나 ? how do we commnicate ?

 

hypertext

문서와 문서가 링크로 연결되어 있음을 뜻함

 

transfer

전송하다 = 물건이나 편지따위를 보내다

html로 만든 웹페이지 문서(파일)을 보낸다.

 

Protocol

컴퓨터끼리 어떻게 html파일을 주고 받을 지에 대한 소통 방식 또는 약속

 

언제쓰나 ?

필요한 데이터를 주고받을 때

프론트와 백이 서로 데이터를 주고받을때 http 규약을 지키며 주고 받는다.

 

 

Request, Response (요청 , 응답)

요청 (클라이언트) , 응답 (서버)

요청이 있어야 응답을 할 수 있다.

요청이 없으면 응답을 할 수 없다.

 

 

Stateless

http 개별 통신은 모두 독립 이어서 , 과거의 http통신의 결과(상태)를 보존하지 않습니다.

기억을 하지못함.

 

매 통신마다 사전에 필요한 정보를 전부 담아서 요청을 보내야함

statefull 과 반대

 

ex) 카페에서 가격을 물어보고 시럽을 넣어 달라고 요청을하고 카카오페이로 결제를 한다.

"아아, 시럽 넣어서 2개 카카오페이로 결제 할게요" 이런식으로 보내야 한다.

 

state(상태) + less(없음)

 

Stateless 의 장점 ? 

 

1요청 1응답

넷플릭스 와 같이 1초에도 몇십만 몇백만의 요청과 응답이 왔다갔다 하는경우 웹사이트는 몇십만 몇백만에 정보를 한번에 기억하고 응답할수 없기때문에 Stateless 방식을 사용한다.

 

요청메세지 구조

요청 메세지 구조

start line

- 요청의 첫번째 줄

http method : 요청이 의도한 액션을 정의

request target : 요청이 전송되는 목표 url

http version : http 버전  - POST / login HTTP/1.1

 

headers


- 요청의 메타데이터를 담고 있는 부분 {key, value 형태}

 

Headers

- Host : www.goolgle.com 

- User - Agent : chrome

- Content-Type : application/json

- Content-Length : 50

 

bady

- 요청의 실제 내용

 

- Body :{

본문 : 유저네임, 패스워드(토큰)

}  - 요청메소드에 따라 존재하지 않을 수도 있음

 

응답 메세지 구조

응답 메세지 구조

 

Status Line

 

Http version : http 버전

status code : 응답상태코드

status text : 응답의 상태를 간략히 설명하는 텍스트 

- http/1.1 404 Not Found

 

Headers

응답의 메타데이터를 담고 있는 부분 {key, value 형태}

 

headers : {

Host : www.google.com  

User-Agent : chrome

Content - Type : application/json

Content-length

}

 

Body

- 요청의 실제 내용

 

Body :{

본문 : 유저네임, 패스워드(토큰)

}  - 요청메소드에 따라 존재하지 않을 수도 있음

 

 

 

HTTP Request Methods

 

GET

이름 그대로 어떤 데이터를 서버로 부터 받아(GET)올 때 주로 사용하는 메소드

데이터를 받아오기만 할 때 사용

웹페이지에 접속해서 필요한 데이터를 불러올 때 사용

 

ex ) 장바구니에 담은 제품을 조회한다

GET

 

POST

데이터를 생성/수정할 때 사용

데이터를 생성 및 수정 할 때 많이 사용되기 때문에 대부분의 경우 요청에 body가 포함되서 보내집니다.

중요한 정보를 담을때는 GET보다는 POST방식을 사용한다. 추가로 POST방식 보다 더 안전한 방식은 HTTPS 를 사용한다.

 

ex) 장바구니에 맘에 드는 상품을 담는다

POST

 

 

DELETE

메소드의 이름에서 유추 가능하듯, 특정 데이터를 서버에서 삭제 요청을 보낼때 쓰는 메소드입니다.

 

ex)장바구니에서 제품을 삭제한다

DELETE

메세지에 따라 바디를 삭제할 수 있다.

 

 

Response Status Code

 

가장 자주 만나게되는 Status Code

1. Success

1-1. 200: OK

  • 가장 자주 보게되는 Status Code
  • 문제없이 요청에 대한 처리가 백엔드 서버에서 이루어지고 나서 오는 응답코드입니다.

1-2. 201: Created

  • 무언가가 잘 생성되었을 때에(Successfully Created) 오는 Status Code
  • 대게 POST 메소드의 요청에 따라 백엔드 서버에 데이터가 잘 생성 또는 수정 되었을 때에 보내는 코드입니다.

1-3. 204: No Content

  • 요청이 성공했으며 제공할 응답메세지가 없을 경우 사용하는 Status Code
  • 주로 DELETE 메소드의 요청으로 성공적으로 삭제되어서 응답으로 제공할 컨텐츠가 없을 때 사용된다.

 

2. Client Error

2-1. 400: Bad Request

  • 해당 요청이 잘못되었을 때 보내는 Status Code
  • 주로 요청의 Body에 보내는 내용이 잘못되었을 때 사용되는 코드입니다.
  • ex) 전화번호를 보내야 하는데 숫자가 아닌 문자열의 주소가 대신 Body에 담겼을 경우

2-2. 401: Unauthorized

  • 유저가 해당 요청을 진행하려면 먼저 로그인을 하거나 회원가입이 필요하다는 의미를 나타내는 Status Code
  • ex) wish list, 좋아요 기능은 회원이 아니면 요청을 보낼 수 없습니다.

2-3. 403: Forbidden

  • 유저가 해당 요청에 대한 권한이 없다는 의미를 나타내는 Status Code
  • 접근 불가능한 정보에 접근했을 경우를 의미합니다.
  • ex) 오직 유료회원만 접근할 수 있는 데이터를 요청 했을 때

2-4. 404: Not Found

  • 요청된 URI 가 존재하지 않는다는 의미를 나타내는 Status Code

 

3. Server Error

3-1. 500: Internal Server Error

  • 서버에서 에러가 났을 때의 Status Code