클라이언트-서버 아키텍처
✍︎클라이언트-서버 아키텍처, 2-Tier 아키텍처
: 상품정보같은 리소스가 존재하는 곳(서버)과 리소스를 사용하는 앱(클라이언트)을 분리시킨 것
case) 카페
손님(클라이언트) ---요청---> 점원(서버)
손님(클라이언트) <--응답---- 점원(서버)
✍︎3티어아키텍쳐
:2티어 아키텍처에서 데이터베이스가 추가된 형태
서버는 리소스를 전달해주는 역할, 데이터베이스는 리소스를 저장하는 공간
case)카페
손님(클라이언트) ---요청--> 점원(서버) ---요청--> 창고(데이터베이스)
손님(클라이언트) <--응답--- 점원(서버) <--응답--- 창고(데이터베이스)
클라이언트-서버통신과 API
클라이언트와 서버간의 통신은 요청과 응답으로 구성
-프로토콜: 통신규약
=> 웹애플리케이션 프로토콜: HTTP
-API(Application Programming Interface)
: 서버는 클라이언트에게 리소스를 잘 활용할 수 있도록 인터페이스를 제공
interface의 사전적의미: 의사소통이 가능하도록 만들어진 ‘접점’
case) 카페에서 메뉴판 제공
보통 인터넷에 있는 데이터를 요청할 때에는 HTTP프로토콜을 사용하며, 주소(URL,URI)를 통해 접근할수 있다.
*HTTP API 디자인을 잘하는 방법
HTTP메소드는 CRUD 행동에 따라 목적에 맞게 써야한다.
요청 | 적절한 메소드 |
---|---|
조회(read) | get |
추가(create) | post |
갱신(update) | put 또는 patch |
삭제(delete) | delete |
URL과 URI
URI구분
http://www.google.com:80/search?q=JavaScript
부분 명칭 설명 file:/
,http://
,https://
scheme 통신 프로토콜 127.0.0.1
,www.google.com
hosts 웹 페이지, 이미지, 동영상 등의 파일이 위치한 웹 서버, 도메인 또는 IP :80
,:443
,:3000
port 웹 서버에 접속하기 위한 통로 /search
,/Users/username/Desktop
url-path 웹 서버의 루트 디렉토리로부터 웹 페이지, 이미지, 동영상 등의 파일이 위치까지의 경로 q=JavaScript
query 웹 서버에 전달하는 추가 질문
IP와 포트
도메인과 DNS
nslookup
)ex)
IP 주소: 3.34.153.168
도메인 이름: codestates.com
Ex) 검색창에 naver.com을 입력=> DNS에서 IP주소 125.209.222.142 를 찾음
: HTML과 같은 문서를 전송하기 위한 프로토콜
HTTP Messages
: 클라이언트와 서버 사이에서 데이터가 교환되는 방식
-요청(requests)
-응답(responses)
=>유사한 구조
HTTP Requests
: 클라이언트가 서버에게 보내는 메시지
start line
수행할 작업(GET, PUT, POST 등) 이나 방식(HEAD or OPTIONS)을 설명하는 HTTP method를 나타냄. 예를 들어 GET method는 리소스를 받아야 하고, POST method는 데이터를 서버로 전송함
요청대상 또는 프로토콜, 포트, 도메인의 절대 경로는 요청 컨텍스트에 작성됨. 요청 형식은 HTTP method마다 다름
-origin형식: ‘?’와 쿼리 문자열이 붙는 절대 경로. method
와 함께 사용
POST / HTTP 1.1
GET /background.png HTTP/1.0
HEAD /test.html?query=alibaba HTTP/1.1
OPTIONS /anypage.html HTTP/1.0
-absolute형식: 완전한 URL형식, 프록시에 연결하는 경우 대부분 GET method
와 함께 사용
GET http://developer.mozilla.org/en-US/docs/Web/HTTP/Messages HTTP/1.1
-authority형식 : 도메인 이름과 포트 번호로 이루어진 URL의 일부분. CONNECT
와 함께 사용
-asterisk형식 : OPTIONS
와 함께 별표(*)하나로 서버 전체를 표현
OPTIONS * HTTP/1.1
HTTP버전에 따라 HTTP message의 구조가 달라짐.start line에 HTTP버전을 함께 입력
Headers
: 기본구조를 따른다. 헤더이름, 콜론(:), 값을 입력
Body
: HTTP messages 구조의 마지막에 위치, POST나 PUT과 같은 일부 요청은 데이터를 업데이트하기 위해 사용
HTTP Responses
: 서버가 클라이언트에게 보내는 메시지
Ex)HTTP/1.1 404 Not Found