🚀 What You Will Learn
1. HTTP
2. HTTP의 두가지 특징
3. Request, Response 구조
4. HTTP Request Methods
5. Response Status Codes
즉, 컴퓨터끼리 Html파일을 서로 주고받을 수 있게하는 약속.
Startline : http -v ~
Head : POST ~ User-Agent
Body : email, password 정보
Start Line: 요청의 첫번째 줄에 해당한다. 이 시작 줄도 세 부분으로 구성되어있다.
1. **HTTP Method**: 해당 요청이 의도한 액션을 정의하는 부분. 주로 **GET**, **POST**, **DELETE**가 많이 쓰임
2. **Request target**: 해당 request가 전송되는 **목표 url**
3. **HTTP Version**: 말 그대로 사용되는 **HTTP 버전**을 뜻한다. 주로 1.1 버전이 널리 쓰임
**GET /login HTTP/1.1**
해석: GET 메소드로 login 이라는 요청 타겟에 HTTP 1.1 버전으로 요청을 보내겠다!
Headers: 해당 요청에 대한 추가 정보(메타 데이터)를 담고있는 부분이다.
**Key: Value** 값으로 되어있다 (JavaScript의 객체, Python의 딕셔너리 형태라고 보면 된다)
자주 사용되는 **Headers** 의 정보에는 다음이 있다
Headers: {
**Host**: 요청을 보내는 목표(타겟)의 주소. 즉, 요청을 보내는 웹사이트의 기본 주소가 된다
(ex. www.apple.co.kr)
**User-Agent**: 요청을 보내는 클라이언트의 대한 정보 (ex. chrome, firefox, safari, ~~explorer~~)
**Content-Type**: 해당 요청이 보내는 메세지 body의 타입 (ex. application/json)
**Content-Length**: body 내용의 길이
**Authorization**: 회원의 인증/인가를 처리하기 위해 로그인 토큰을 Authroization 에 담는다
}
Body: 해당 요청의 실제 내용. 주로 Body를 사용하는 메소드는 POST다.
**ex) 로그인 시에 서버에 보낼 요청의 내용**
Body**:** {
"user_email": "jun.choi@gmail.com"
"user_password": "wecode"
}
**장바구니에 담은 제품을 조회한다**
```markdown
**(축약된 요청 메세지)
GET /shop/bag HTTP/1.1**
Headers: {
"HOST": "https://www.apple.com/kr"
"Authroization": "kldiduajsadm@9df0asmzm" (유저가 본인임을 증명할 수 있는 인증/인가 토큰)
}
**(축약된 응답 메시지)
HTTP/1.1 200 SUCCESS**
Body: {
"message": "SUCCESS"
"carts": [
{
"productId": 10
"name": "Pro Display XDR - Nano-texture 글래스"
"price": "₩7,899,000"
"quantity": 1
},
{
"productId": 20
"name": "Mac Pro"
"price": "₩73,376,000"
"quantity": 2
}
]
}
**장바구니에 맘에 드는 상품을 담는다**
```markdown
**(축약된 요청 메세지)
POST /shop/bag HTTP/1.1**
Headers: {
"HOST": "https://www.apple.com/kr"
"Authroization": "kldiduajsadm@9df0asmzm" (유저가 본인임을 증명할 수 있는 인증/인가 토큰)
}
Body: {
product: {
"productId": 30
"name": "12.9형 iPad Pro Wi-Fi + Cellular 128GB"
"color": "스페이스 그레이"
"price": "₩1,499,000"
"quantity": 1
}
}
**(축약된 응답 메시지)
HTTP/1.1 201 SUCCESS**
Body: {
"message": "SUCCESSFULLY CARTS UPDATED"
}
**장바구니에서 제품을 삭제한다**
```markdown
**(축약된 요청 메세지)
DELETE /shop/bag HTTP/1.1**
Headers: {
"HOST": "https://www.apple.com/kr"
"Authroization": "kldiduajsadm@9df0asmzm" (유저가 본인임을 증명할 수 있는 인증/인가 토큰)
}
Body: {
productId: 30
}
**(축약된 응답 메시지)
HTTP/1.1 201 SUCCESS**
Body: {
"message": "productId 30 DELETED"
}
200 : OK. 가장 많이 봄. 문제 요청에 관한 처리가 백엔드 서버에서 완전히 처리됐을때
201 : Created. 뭔가가 생성됐을때. 또는 post 메소드 요청에 따른 백엔드 서버에 데이터가 생성, 수정됐을때.
400 :Bad Request. 요청이 잘못됐을 때.
401 :Unauthorized. 사용자의 로그인, 회원가입이 선결적 필요할때. 뭔가를 할때 가입이나 로그인이 필요할때 나옴
403 : Forbidden. 해당 요청에 관한 권한이 없을때. 접근 불가능한 정보에 접근. 또는 유료회원만 접근할 수 있는 특정 데이터에 유료회원이 아닌 사용자가 데이터를 요청했을때
404 : Not Found. 요청된 url가 존재하지 않을때
500 : Internal Server Error. 서버에서 에러났을 때. API 개발을 주로하는 백엔드 측의 잘못을 보여줌... 프론트가 아니라.