HTTP 1.1
방식으로 GET
요청을 보냄
GET / HTTP/1.1
Host: www.naver.com
Cookie: PM_CK_loc=dac2d79568fae9dbe0d15731e12baeb29d1dadd11864edcc1e7e0be435a207cd
이런 형식으로!
DNS
(Domain name system)조회
-> HTTP
요청 메시지 작성
-> Socket
라이브러리를 통해 전달
-> TCP
/IP
작성되고 이 안에 HTTP
메시지가 포함
HyperText Transfer Protocol
원래는 html 전송용이었으나 현재는 모든 형태(이미지, 음성, 영상, 파일, json, xml..etc)를 전송한다.
HTTP 1.1에서 양식은 고정되었다. HTTP2와 HTTP3은 성능 개선만 된거지 양식은 그대로!
Request를 보냄 -> response를 기다림
클라이언트에 ui, 서버 쪽에 logic
즉, 클라이언트와 서버의 분리!
문제가 생겼을 경우 각각 해결하면 된다.
서버가 클라이언트 상태를 보존하지 못함.
즉, 서버가 우리의 상태를 기억하지 않음!
장점
: 응답 서버를 쉽게 바꿀 수 있음.
예외
: 세션 로그인은 상태가 있음. (최소한으로 사용)
기본적으로 연결을 유지하지 않으며,
일반적으로 초 단위의 빠른 응답과 최소한의 자원을 사용한다.
Request line GET / HTTP/1.1
과
Status line HTTP/1.1 200 OK
정도의 차이가 있다!
쿼리 파라미터로 전송 :
GET
검색 정렬 필터
메시지 바디 :POST
,PUT
,PATCH
회원가입, 상품 주문, 리소스 등록 변경
기본적으로 get, post만 지원
서버 to 서버, 앱 클라이언트, 웹 클라이언트(ajax). Post,put,patch도 가능
- Informational responses (100 – 199)
- Successful responses (200 – 299)
- Redirection messages (300 – 399)
- Client error responses (400 – 499)
- Server error responses (500 – 599)
1xx
요청이 수신되어 처리 중. 거의 사용되지 않음
2xx
요청 정상 처리
200
OK
201
Created
202
Accepted
204
No Content
보통은 200이랑 201만 사용.
3xx
추가 행동 필요
주로 redirect를 해줄 때
4xx
클라이언트 에러
400
요청 내용을 다시 검토.
API 스펙이 맞는지! 보통 폰트의 오타나 누락
401
로그인이 안되어있다. 인증이 안됨
403
권한이 없음.
404
는 보통 url이 틀렸을 때!
잘못 된 문법. 오류의 원인이 클라이언트에 있다.
5xx
서버 에러
500
서버 내부 문제
503
서버가 일시 과부하
잘 보냈는데 서버 쪽에 문제가 생겨서. 백엔드 쪽으로 확인하자!
- Field name(key) + value
※ Field name 은 대소문자 구분이 없다.
http 전송에 필요한 모든 부가정보.
body의 데이터를 해석할 수 있는 정보를 제공한다.
ㅡㅡ
API를 restful하게 짜자!
가장 중요한 건 리소스 식별.
회원이라는 개념 자체가 리소스고 uri에 이것이 매핑되는 것. 거기에 하는 행위는 메소드
라는데 사실 아직 감이 덜 잡힌다.
리소스와 행위를 분리하는 것이 restful한 API라고 함!
(리소스 : 회원, 행위 : 조회, 등록, 삭제, 변경)