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 ) 장바구니에 담은 제품을 조회한다
POST
데이터를 생성/수정할 때 사용
데이터를 생성 및 수정 할 때 많이 사용되기 때문에 대부분의 경우 요청에 body가 포함되서 보내집니다.
중요한 정보를 담을때는 GET보다는 POST방식을 사용한다. 추가로 POST방식 보다 더 안전한 방식은 HTTPS 를 사용한다.
ex) 장바구니에 맘에 드는 상품을 담는다
DELETE
메소드의 이름에서 유추 가능하듯, 특정 데이터를 서버에서 삭제 요청을 보낼때 쓰는 메소드입니다.
ex)장바구니에서 제품을 삭제한다
메세지에 따라 바디를 삭제할 수 있다.
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