태태개발일지 - http
기본 네트워크
무언가를 보낼때는
IP를 통해서 Node인지
Node <---------------------> Node
그리고 Node중 원하는 구역으로 보내기 위해서는
Port를 사용한다.
HTTP 란?
HTTP는 hyper-text-transfer-protocol로
원래는 html을 보내는 양식으로 약속되었지만 , 요즘 세대는 그냥 모두 포함해서 보내고있다. ex) 음성, 이미지 ....
http 1.1 버전을 가장 많이쓰고,
http 2,3 버전도 있는데 3버전은 UDP를 사용한다고 알고 있다. -> 영상이나 사진
HTTP 요청 , 응답 (Request, Response)
요청:
start-line = request-line
- HTTP 메서드 ex) GET
- 요청 대상 /index.html -> 절대경로 = "/" + [? 쿼리 포함]
- HTTP Version : HTTP/1.1
header
공백
응답:
start-line = status -line
- HTTP 버전
- HTTP 상태코드
- 이유
header : ex) field-name: "OWS filed-value OWS" = HTTP 전송에 필요한 모든 부가정보 OWS: 공백허용
공백
HTTP 메서드
GET - 리소스조회 : 서버에 전달하고 싶은 데이터는 query 파라미터를 통해서 전달
*메세지 바디를 사용해서 전달할 수 있지만 지원하지 않는 곳이 많아서 권장 X*
POST - 요청 데이터 처리: 메세지 바디를 통해 서버로 요청 데이터 전달
서버는 요청 데이터를 처리한다. ex) 메세지 바디를 통해 들어온 데이터를 처리하는 모든 기능을 수행한다.
*데이터를 등록한다는 개념은 아니다. -> 대상 리소스가 리소스의 고유 한 의미 체계에 따라 요청에 포함 된 표현을 처리하도록 요청*
1. 새 리소스 생성.
2. 요청 데이터 처리
ex) 단순 데이터를 생성하거나, 변경하는 것을 넘어서 프로세스를 처리해야하는 경우.
-> 주문에서 결제완료 -> 배달시작 -> 배달완료 처럼 단순히 값 변경을 넘어 프로세스가 변경되는 경우
컨트롤 URL: POST/orders/{orderId}/start-delivery
URI에는 보통 (리소스의 이름) 즉 명사를 명시하는 것이 주된 약속인데. 그렇지 못할경우 동사를 사용하는 것을 컨트롤 URL이라고 한다.
PUT - 기존에 있는 리소스를 완전히 대체한다.
클라이언트가 리소스의 전체 위치를 알고 넣는다는 것이 POST와 차별되는 것.
기존 리소스를 삭제하고 다시 생성한다는 느낌.
PATH - 기존에 있는 리소스를 부분적으로만 변경한다.
DELETE - 리소스 제거