[참고 강의] 김영한님의
모든 개발자를 위한 HTTP 웹 기본 지식
✏️ URI
"URI는 로케이터(locator), 이름(name) 또는 둘다 추가로 분류될 수 있다"
URI 단어 뜻
- Uniform : 리소스 식별하는 통일된 방식
- Resource : 자원, URI로 식별할 수 있는 모든 것(제한 없음)
- Identifier : 다른 항목과 구분하는데 필요한 정보
scheme://[userinfo@]host[:port][/path][?query][#fragment]
https://www.google.com:443/search?q=hello&hl=ko
1. URL host
- 호스트명
- 도메인명 또는 IP 주소를 직접 사용가능
2. URL PORT
- 포트, 일반적으로 생략
- 생략시 http는 80 https는 443
3. URL path
4. URL query
- key=value 형태
- ?로 시작하고, &로 추가 가능
- ex) ?keyA=valueA&keyB=valueB
- query parameter, query string 등으로 불림
- 웹서버에 제공하는 파라미터, 문자 형태
5. URL fragment
- html 내부 북마크 등에 사용
- 서버에 전송하는 정보 아님
✏️ HTTP
HTTP 특징
- 클라이언트 서버 구조
- 무상태 프로토콜(스테이스리스), 비연결
- HTTP 메시지
- 단순함, 확장 가능
클라이언트 서버 구조
- Request Response 구조
- 클라이언트는 서버에 요청을 보내고, 응답을 대기
- 서버가 요청에 대한 결과를 만들어서 응답
무상태 프로토콜
- 서버가 클라이언트의 상태를 보존X
- 장점: 서버 확장성 높음(스케일 아웃)
- 단점: 클라이언트가 추가 데이터 전송
Stateless 실무 한계
- 모든 것을 무상태로 설계할 수 있는 경우도 있고 없는 경우도 있다.
- 무상태 예) 로그인이 필요 없는 단순한 서비스 소개 화면
- 상태 유지 예) 로그인
- 로그인한 사용자의 경우 로그인 했다는 상태를 서버에 유지
- 일반적으로 브라우저 쿠키와 서버 세션등을 사용해서 상태 유지
- 상태 유지는 최소한만 사용
✏️ HTTP 메서드
HTTP 메서드 종류
- GET : 리소스 조회
- POST : 요청 데이터 처리, 주로 등록에 사용
- PUT : 리소스를 대체, 해당 리소스가 없으면 생성
- PATCH : 리소스 부분 변경
- DELETE : 리소스 삭제
GET
- 리소스 조회
- 서버에 전달하고 싶은 데이터는 query(쿼리 파라미터, 쿼리 스트링)를 통해서 전달
- 메시지 바디를 사용해서 데이터를 전달할 수 있지만, 지원하지 않는 곳이 많아서 권장하지 않음
-
메시지 전달 + 서버 도착
-
응답 데이터
POST
- 요청 데이터 처리
- 메시지 바디를 통해 서버로 요청 데이터 전달
- 서버는 요청 데이터를 처리
(메시지 바디를 통해 들어온 데이터를 처리하는 모든 기능 수행)
- 주로 전달된 데이터로 신규 리소스 등록, 프로세스 처리에 사용
PUT
- 리소스를 대체
리소스가 있으면 대체, 리소스가 없으면 생성 -> 덮어버림
- 클라이언트가 리소스를 식별
클라이언트가 리소스 위치를 알고 URI 지정, POST와 차이점
PATCH
DELETE
HTTP 메서드 속성
안전, 멱등, 캐시가능
이어 올리겠숩니당