Sprint 7 - Server & Node

dlrbwls0302·2021년 2월 3일
0

Achievement Goals

  • HTTP
    1) HTTP 요청/응답을 브라우저를 통해 확인할 수 있고, 해당 내용을 읽을 수 있다.
    2) HTTP 다양한 요청 방식과, 응답 코드에 대해 이해할 수 있다.
  • node.js modules의 사용
    1) node.js의 내장 http 모듈을 사용할 수 있다.
    2) node.js의 내장 fs 모듈을 사용할 수 있다.
    3) http 모듈 사용시에 서버에 CORS 설정을 할 수 있다.
    4) CommonJS를 이용한 모듈 내보내기/불러오기를 할 수 있다.
  • 라우팅과 API
    1) 라우팅(조건에 따른 분기)을 이해하고, 이를 서버 코드에서 구현할 수 있다.
    2) 클라이언트가 사용할 수 있도록, 서버 API 문서를 직접 작성할 수 있다.
  • Express 라이브러리 맛보기
    1) express 라이브러리가 어떤 작업을 단순하게 만드는지 이해할 수 있다.
    2) 미들웨어의 개념을 이해할 수 있다.
  • 서버 개발과 디버깅
    1) 서버 개발을 돕는 다양한 툴들을 익힐 수 있다.
    • nodemon의 사용
    • inspect 옵션을 이용한 디버깅

Node.js의 역할

1. Node.js 란?

이것이 Node.js 공식 홈페이지에 올라온 Node.js에 대한 정의이다. 내가 여기서 이해할 수 있는 건 Chrome과 JavaScript 정도인 것 같다. 그럼 나머지 엔진이나 런타임 같은 단어는 뭘까?

우선 엔진은 JavaScript 코드를 해석하기 위한 프로그램 정도로 생각하면 될 것 같다. 우리가 웹 개발을 할 때 보통 JavaScript를 사용하게 되는데 이 JavaScript의 코드를 해석하기 위해 JavaScript 엔진을 쓰고, Chrome의 경우엔 V8이라는 엔진을 쓴다.

런타임은 어떤 것을 구현할 수 있는 환경 따위를 말하는데 서버에서 JavaScript가 동작할 수 있도록 하는 환경 정도로 생각하면 될 것 같다.

2. Node.js의 역할

Node.js는 말 그대로 서버내에서 JavaScript가 동작할 수 있게끔 하는 실행 환경이기 때문에 Node.js 자체로는 뭔가를 할 수 없고, 다만 Node.js의 자체 모듈인 http 모듈을 사용하여 서버를 생성해 줄 수 있다.

3. Node.js를 쓰는 이유

Node.js는 JavaScript를 컴파일하여 컴퓨터가 알아들을 수 있는 언어로 바꿔주는 역할을 하고 비동기 적으로 일처리를 하기 때문에 속도가 빠르다는 장점이 있다.

4. Node.js의 모듈


Package.json의 역할

Package.json은 npm을 활용하기 위한 정보들이 모여있는 파일이다. Package.json은 또한 프로젝트에 관한 정보도 들어있다.


API의 개념, API 문서를 읽는 방법

1. API 란?

클라이언트는 서버에 여러가지 요청을 할 수 있다. 예를 들어 "로그인 시켜줘.", "회원 정보 가져와줘.", "이 메세지를 삭제해줘." 등의 요청을 서버에 보낼 수 있다. 그런데 서버는 우리가 보낸 요청을 이해할 수 가 없다. 우리가 "로그인 시켜줘."라는 요청을 보냈는데 컴퓨터는 한글을 모르기 때문에 이 말이 무슨 뜻인지 이해할 수 없고, 따라서 우리의 요청에 제대로 된 응답을 할 수가 없게 된다.

그렇다면 클라이언트와 서버에 뭔가 중간 다리같은 역할이 있어, 클라이언트의 요청을 서버가 알아들을 수 있게 바꿔줘야 할 뭔가가 필요한데 그 역할을 하는 것이 바로 API이다. API가 진행하는 형태는 다음과 같다. 클라이언트는 요청을 보내는데 그 요청의 형식은 보통 '서버주소/A'의 형태로 온다. 여기서 서버주소는 서버(컴퓨터)의 IP 주소를 의미한다. A는 요청의 종류인데 예를 들어 A가 로그인을 요청하는 문자일 경우, '서버주소/A'는 "xx IP 주소에 있는 서버(컴퓨터)야 로그인을 진행해줘"라고 이해하면 될 것 같다.

2. REST API

클라이언트가 서버에 요청할 때 우리는 그 요청을 크게 4가지 요소로 분리할 수 있다. 바로 CRUD(Create, Read, Upload, Delete)이다. 그리고 이 CRUD는 각각 주소를 갖게 된다. 예를들어 타임라인에 사진을 올리는 요청을 '서버주소/timelinecreate'라고 표현할 수 있다. 그런데 요청마다 CRUD가 존재하고 그 CRUD가 각각 주소를 한 개씩 가지고 있다면 그 주소가 너무 많고 번잡해서 나중엔 관리하기가 힘들어 질 것이다. 그래서 나온 개념이 REST(Representational State Transfer)한 API 인데 CRUD를 한 개의 주소로 관리하는 방법이다.

3. 결론

정리하면 API는 소프트웨어가 다른 소프트웨어의 기능을 쓰기 위해 중간에 필요한 체계이다. 기능을 쓰기 위해 주소로 요청을 보내면 응답을 해주는 소프트웨어끼리의 체계라고 보면 된다.

profile
오늘의 공부가 쌓여서 내일의 나를 만들어낸다.

0개의 댓글