티스토리 뷰

<Node.js 교과서>라는 책에 있는 간단한 이름 등록, 수정, 삭제하는 웹사이트 예제를 분석하면서,

웹의 작동 원리를 이해해 보려고 한다.

 

웹 초보자라 헷갈려서 가장 큰 골자를 직관적으로 이해할 수 있는 것을 목표로 정리해보려고 한다.

 

 

예제 코드 : github.com/ZeroCho/nodejs-book/tree/master/ch4/4.2

 

ZeroCho/nodejs-book

Contribute to ZeroCho/nodejs-book development by creating an account on GitHub.

github.com

웹사이트 접속 화면

 

 

 

 

 

 

기본 로직

 

 

 

클라이언트 역할 프로세스 : 브라우저(?)   (restFront.js 코드는 이 브라우저 위에서 실행된다. 실행 환경이 브라우저)

서버 역할 프로세스 : restServer    (restServer.js 는 서버측에서 실행된다. 실행 환경이 node)

 

 

 

 

 

작동 순서

(1) 서버 객체를 만든다. 이때 요청이 오면 어떻게 처리할 것인지 정해둔 callback 함수도 등록된다.

(2) 서버 객체는 8082 포트에서 요청이 오나 기다린다.

(3) 클라이언트로부터 요청이 온다.

(4) callback 함수를 호출해 처리하고 응답을 보낸다.

(5) 브라우저가 도착한 응답 데이터를 해석, 처리해서 화면을 띄운다

 

(2) - (5) 계속 반복.

 

 

 

 

 

 

createServer 인자로 준 callback 함수 분석 


try

(1) 요청 방식 GET 인 경우

        (1-1) 요청 url이 '/' 이면

            응답으로 restFront.html 전송

 

        (1-2) 요청 url이 '/about' 이면

            응답으로 about.html 전송

 

        (1-3) 요청 url이 '/users' 이면

            응답으로 users 변수 내용 전송

 

        (1-4) else

           해당 url의 파일 읽기 성공하면 응답으로 전송

 

(2) 요청 방식 POST 인 경우

        (2-1) 요청 url이 '/user/' 이면

            요청 body 스트림 형식으로 전달받아

            users에 key는 현재 시각으로 생성,  value는 body.name으로 해서 등록 후

            'ok'라고 응답보내기

 

(3) 요청 방식 PUT 인 경우

        (3-1) 요청 url이 `/user/${key}` 형식이면

            요청 body 스트림 형식으로 전달받아

            users에서 이 key의 정보 body.name으로 수정 후

            'ok'라고 응답 보내기

 

(4) 요청 방식 DELETE 인 경우

        (4-1) 요청 url이 `/user/${key}` 형식이면

            users에서 이 key의 정보 삭제 후

            'ok'라고 응답 보내기

 

(5) else 404 not found라고 응답 보내기

 

catch

에러 처리 


 

 

 

 

 

 

RESTful 한 웹서버

 

위 callback 함수 알고리즘에서 볼 수 있듯이, 요청 메서드요청 url(주소)만 가지고 어떤 요청인지 알아볼 수 있었다.

 

이렇게 REST는 서버의 자원을 정의하고 자원에 대한 주소를 지정하는 방법을 뜻하고

REST를 사용한 주소 체계로 웹 서버를 만들면 RESTful 하다고 말한다고 한다.

 

 

 

 

 

 

HTTP methods

 

 

HTTP method는 request method이다! 응답이랑은 상관없음.

 

GET request

쿼리스트링이 없었던 경우

POST request

 

'시리즈 > Web' 카테고리의 다른 글

쿠키, 세션, passport.js  (0) 2021.04.30
proxy와 CORS 2편  (0) 2021.04.22
proxy와 CORS 1편  (1) 2021.04.22
Real Time Web 선택지 비교  (0) 2021.02.16
웹 서버 종류와 WAS  (0) 2021.02.15
댓글
공지사항
최근에 올라온 글