🌐 클라이언트-서버
1. 용어
여기서 컴퓨터라함은 CPU, RAM이 있는 하드웨어다.
클라이언트
- 서버에 요청하는 컴퓨터
- GET, POST 등등..
HTTP 메서드를 이용해 request 한다.
서버
- 클라이언트 요청을 늘 Listen 하는 컴퓨터.
- 요청에 대해 응답을 해주는 프로그램
- 데이터를 요구하면 데이터 보내주는프로그램
클라이언트-서버 Example
> 카카오톡 <
1. 클라이언트 요청
채팅방에 메세지를 입력하고 전송 버튼을 누르는것
2. 서버 요청 응답
채팅방에 쓰여질 http 데이터를 제공(응답)해줌
🌐 URL
정의
Uniform Resource Locator : URL은 웹에 게시된 어떤 자원을 찾기위해 브라우저에서 사용된다.
URL의 구조
http://www.example.com:80/path/to/myfile.html?key1=value1&key2=value2#SomewhereInTheDocument
1. http:// | 프로토콜 : 데이터를 교환하는 방법을 나타냄
2. www.example.com | 도메인이름 : IP address를 사용하는 것도 가능합니다 {도메인 :IP}
3. :80 | 포트번호 : 웹서버에서 자원을 접근하기 위해 사용하는 "관문(gate)"
4. path/to/myfile.html | 자원의 경로
5. ?key1=value1&key2=value2 | URL Parameter(QueryString) : key-value 형식 리스트
URL 중에서 물음표 ‘?’ 이후 문자열
쿼리 : _key_=_value_
And : &으로 쿼리를 잇기
6. #SomewhereInTheDocument | anchor
DNS
DNS는 전세계구급 서버로, IP와 도메인을 대응시켜주어 URL 주소값을 가져온다.
- EX). IP/도메인
- IP : 192.0.0.1
- 도메인 : www.google.com
HTTP 프로토콜
Link : Http와 웹 | Http 설명 | 요청-응답주기
실제 웹 브라우저에서 응답 받는 HTTP의 내용 구성이다.
① 하이퍼 텍스트 전송 프로토콜
하이퍼 텍스트 : text인데 사진, 동영상, 참조 URL 경로도 첨가할 수 있는 문서 형태
- 웹기반 Struct / 어플리케이션
- 클라이언트(컴퓨터) - 서버(컴퓨터)간에 데이터 교환 (서버-클라이언트 등등..)을 위한 메세지다
- 이미지, 비디오, 오디오 Doc 등등..
- TCP/IP 에 기반한 프로토콜이다.
- http(하텍전프)를 아는 컴퓨터간 소통만이 유효하다만, 사실 모든 컴퓨터(클라,서버)는 Http라는 통신규약을 사용할 줄 안다..
② HTTP의 세가지 핵심
- http is connectonless : 요청을 받고, 한번 전송이 끝나면 연결을 끊기때문이다
- http can deliver any sort of data -> and computer can able to read it
- http is stateless : 연결되는 동안 서버-클라이언트는 서로의 상태를 잘 알고 있다. 그래서 상태를 동기화 해주지 않는다는점에서 stateless
③ 왜 HTTP를 사용하나?
-
Http는 클라이언트한테 html 문서를 fetch(가져오기)
아니면 send(전송하기)에 특화되도록 디자인 했기 때문이다. -
가장 편리하고 빠르게 웹으로 이동가능하다.
-
어떻게 작동하나? 그리고 어떻게 가능하게 하나?
흐름
- 메세지 구성 : 더 나아가서 Http 메세지의 구성요소는 어떻게 되어 있나?
- Start Line : contain text based infomation
- Headers : contain text based infomation
- request 메세지의 보조 정보
- key:value로 구성
Host : "google.com" {key = HOST, value = "google.com"}
- 호스트 정보, 클라이언트 정보, 컨텐츠 형식(JSON XML?)
- Body : contain text based infomation
- request 메세지의 메인 정보
- 단, GET을 사용하면 body가 없을수도 있는데..
- 이유는 GET은 이미 URL에 담아서 보내므로 body가 없어도 된다.
- Request VS Response
- 메세지의 구성은 Req냐 Res에 따라도 바뀐다.
- Requset
________________________________________________________________ |Method | URL : path to file | HTTP Version| StartLine GET /products/myproduct.html HTTP/1.0 Headers Host: ww.mywebsite.com Accept:test/html (MEME 타입) Accept-language: en-us Body ㅡ (Get이라서 없는것이지, 나머지 메소드였으면 내용이 있다.) ________________________________________________________________ 메서드 : 서버에게 요청하고 싶은 커맨드 URL : way to locate the resource MEME : 웹에서 파일의 확장자를 나타내는 방법 https://developer.mozilla.org/ko/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types
- Response
___________________________________________ |HTTP Version | State code | StartLine HTTP/1.0 200: OK Header Host : ww.mywebsite.com Accept-language : en-us Accept : text/html Body Product/myproduct.html (Requested File)
Link : Learn HTTP Status Codes In 10 Minutes
HTTP Status Codes
1XX : Infomation
2XX : Success
- ★ 200 : OK
- ★ 201 : Created (Building API Request) your build success
- ★ 204 : Every thing Work way Well but noting to return anything
- 통신은 문제가 없는데 그냥 아무것도 안주겠다고 하는것
3XX : Redirection
- ★ 304 : 너가 알고있는 정보가 바뀌었는지 아닌지 안심해라~ 바뀐게 없으니
- 모니터링 할떄 사용
4XX : Client Error (여기서부턴 내잘못)
- ★ 400 : Bad Request (가장 일반적으로 일어남)
- Request 정보가 뭔가 이상할때 / 작성똑바로 안했을때 / 잘못된 매개변수 전달
- ★ 401 : API key를 전달 안했을때 주로 뜬다 (니 API 안줬으니 응~ Res도 없어)
- ★ 403 : (API key 줘서 니가 누군지는 아는데 어딜 핵폭탄 비번을달래? 꺼져 ㅋ)
- ★ 404 : 니가 누군지는 알겠는데 너가 요청하는게 우리한테 없어요.. 404
5XX : Server Error
Link : HTTP Crash Course & Exploration
메서드 (개발상식 : RESTful API 에서 참조 가능)
① GET : 읽기 : 서버로 받아오기만함
② POST : 생성/수정/삭제
상위호완 메서드
③ PUT / DEL : 생성/삭제 POST에 밀림
GET POST 자세히 알아보자
데이터크기, 담는방식, 목적으로 나누자면..
___ | GET | POST |
---|---|---|
데이터 크기 | 제한 | 큼 |
담는방식 | URL | Body |
목적 | 서버 값, 상태 참조 |
서버 값, 상태 수정, 조작 |