1. Web Architecture
- Client : 서버에게 원하는 리소스를 요청하는 고객, 사용자
- Server : 고객이 요청한 리소스를 응답하는 제공자
- Database : 서버가 클라이언트에게 제공할 수 있는 리소스들이 있는 창고, 혹은 클라이언트가 서버에게 전달한 리소스가 저장될 곳
- API : 서버가 클라이언트에게 제공할 수 있는 기능들, 브라우저를 통해 렌더된 웹 페이지의 UI로 접근할 수 있음
- http : 클라이언트와 서버가 통신할 때 미리 정해놓은 규칙, 규약
대부분의 웹은 위의 것들로 구성된다.
음식점을 예로 들어보겠다.
클라이언트는 맛있는 음식을 먹으러 온 손님이다.
고객이 메뉴판을 보고 웨이터에게 주문을 한다. 여기서 메뉴판은 API이고 웨이터는 서버다.
웨이터가 주방장으로 가서 주방장에게 이 메뉴를 만들어 달라고 한다.
그러면 주방장은 창고에서 해당 메뉴를 만드는데 필요한 재료로 가공을 한 후 음식을 웨이터에게 전달한다.
여기서 창고는 Database라고 할 수 있다. 그런데 만약 손님이 외국인이다. 안타깝지만 웨이터는 영어를 잘하지 못한다.
즉 손님과 웨이터가 의사소통을 하기위해선 같은 언어를 써야 한다는 조건이 있다.
여기서 같은 언어가 http 라고 할 수 있다.
서버의 응답은 항상 클라이언트의 요청에 의해서 일어난다.
손님이 음식을 주문하지도 않았는데 멋대로 웨이터가 음식을 가져다주는 경우는 없다.
이처럼 클라이언트 - 서버 - 데이터베이스로 이루어진 3티어 아키텍처가 모던 웹의 주요한 구성이다.
2. Ajax
내가 처음 Ajax를 접했을 땐 Ajax가 특정 라이브러리나 프레임워크를 의미하는 것이라고 생각했다.
Ajax는 특정 라이브러리 또는 프레임워크가 아닌 하나의 기술을 의미한다. 즉 패러다임이다.
Ajax는 Asynchronus Javascript and XML을 의미한다.
해석하자면 비동기적인 자바스크립트와 XML이 되는데 일단 XML은 크게 신경 쓰지 않아도 된다.
현재 대부분의 모던 웹은 대부분 클라이언트와 서버가 데이터를 주고받을 때 json 형식의 데이터로 주고받는데 ajax가 도입됐을 당시는
주고받는 데이터의 주요한 형식이 XML 이었을 뿐이다.
즉 비동기처리 방식을 통해 서버에게 특정 부분의 데이터만을 받고 자바스크립트를 이용해 그 부분의 UI만을 갱신하는 방식을 말한다.
그렇다면 어떻게 클라이언트가 서버로부터 원하는 데이터를 받아올 수 있을까?
바로 window 객체에 내장되어 있는 fetch 메서드를 활용하면 된다.
fetch의 첫 번째 전달 인자는 URL이다. 두 번째 전달 인자는 option 값으로 선택사항이다.
fetch 메서드에 대한 자세한 내용은 mdn에 자세히 나와있다. mdn을 참고하자!
developer.mozilla.org/ko/docs/Web/API/Fetch_API/Fetch%EC%9D%98_%EC%82%AC%EC%9A%A9%EB%B2%95
'CodeStates' 카테고리의 다른 글
IM 26일차 (CORS) (0) | 2021.02.06 |
---|---|
IM 25일차 (http) (0) | 2021.02.06 |
IM 22일차 (Promise & Async/Await) (0) | 2021.02.02 |
IM 22일차 (자바스크립트 이벤트 루프) (0) | 2021.02.02 |
IM 18일차 (Back Tracking) (0) | 2021.01.29 |