728x90

node.js 10

[Node.js] #10 웹 API 서버 만들기

1. API 서버 이해하기 API(Application Programming Interface) 다른 애플리케이션에서 현재 프로그램의 기능을 사용 할 수 있게 허용하는 접점을 의미. 웹 API는 다른 웹 서비스의 기능을 사용하거나 자원을 가져올 수 있는 창구. 서버에 API를 올려서 URL을 통해 접근 할 수 있게 만든 것을 웹 API 서버라고 부른다. 2. JWT 토큰으로 인증하기 JWT는 JSON Web Token의 약어로, JSON 형식의 데이터를 저장하는 토큰. JWT의 구성요소 - 헤더(Header): 토큰 종류와 해시 알고리즘 정보가 들어있음. - 페이로드(Payload): 토큰의 내용물이 인코딩된 부분. - 시그니처(Signature): 일련의 문자열이며, 시그니처를 통해 토큰이 변조되었는지..

node.js 2021.11.22

[Node.js] #9 익스프레스로 SNS 서비스 만들기

익스프레스로 SNS 같은 공유 네트워크 만들때 주의해야할 점 1) 서버는 요청에 응답하는 것이 핵심 임무이므로 요청을 수락하든 거절하든 상관없이 반드시 응답해야함. 이때 한 번만 응답해야 에러가 발생하지 않음. 2) 개발 시 서버를 매번 수동으로 재시작하지 않으려면 nodemon을 사용하는 것이 좋다. 3) dotenv 패키지와 .env 파일로 유출되면 안 되는 비밀키를 관리해야한다. 4) 라우터는 routes 폴더에, 데이터베이스는 models 폴더에, html 파일은 views 폴더에 구분하여 저장하면 프로젝트 규모가 커져도 관리하기 쉽다. 5) 데이터베이스를 구성하기 전에 데이터 간 1:1, 1:N, N:M 관계를 잘 파악하자 6) routes/middlewares.js처럼 라우터 내에 미들웨어를 ..

node.js 2021.11.19

[Node.js] #8 몽고디비 몽고DB

1. NoSQL vs SQL SQL(MySQL) NoSQL(몽고디비) - 규칙에 맞는 데이터 입력 - 테이블 간 JOIN 지원 - 안정성, 일관성 - 용어(테이블, 로우, 컬럼) - 자유로운 데이터 입력 - 컬렉션 간 JOIN 미지원 - 확장성, 가용성 - 용어(컬렉션, 다큐먼트, 필드) [CRUD] mongo use nodejs; [Create] db.users.save({ name: '로춘남', age: 30, married: false, comment: '안녕하세요.', createdAt: new Date() }); [Read] //모두 조회 db.user.find({}); //특정 필드 조회 db.user.find({}, { _id: 0, name: 1, married: 1 }); [Update]..

node.js 2021.11.19

[Node.js] #7 시퀄라이즈(Sequelize)

※ 시퀄라이즈(Sequelize)를 사용하기전에 데이터베이스 MySQL이 설치가 되어 있어야 합니다. 시퀄라이즈는 ORM(Object-relational Mapping)으로 분류. ORM은 자바스크립트 객체와 데이터베이스의 릴레이션을 매핑해주는 도구. MySQL뿐만 아니라 MariaDB, PostgreSQL, SQLite, MSSQL 등 다른 데이터베이스와도 함께 쓸 수 있다. 왜 시퀄라이즈를 써야하는가? → 자바스크립트 구문을 알아서 SQL로 바꿔주기 때문. 따라서 SQL언어를 직접 사용하지 않아도 자바스크립트만으로 MySQL을 조작 할 수가 있다. [시퀄라이즈에 필요한 패키지 설치] npm i express morgan nunjucks sequelize sequelize-cli mysql2 npm i..

node.js 2021.11.18

[Node.js] #6 익스프레스 웹 서버 만들기

1. 익스프레스 프로젝트 시작하기 익스프레스(express) : 웹 서버를 만들 때 코드가 보기 좋지 않고 확장성도 떨어진다고 느꼈을때, npm에는 서버를 제작하는 과정에서의 불편함을 해소하고 편의 기능을 추가한 웹 서버 프레임워크가 있다. 그것이 바로 익스프레스. const express = require('express'); const app = express(); app.set('port', process.env.PORT || 3000); //서버가 실행될 포트 설정 app.get('/', (req, res) => { res.send('Hello, Express'); }); app.listen(app.get('port'), () => { console.log(app.get('port'), '번 포트..

node.js 2021.11.15

[Node.js] #5 패키지매니저

1. npm 알아보기 npm(Node Package Manager) : 125만개의 패키지가 등록되어 있어 이러한 방대한 양의 패키지는 노드와 자바스크립트의 생태계를 견고하게 만들고, 게다가 대부분 오픈소스이기때문에 노드를 사용해 웹을 만들때 많은도움이 됨. 2. package.json으로 패키지 관리하기 같은 패키지라도 버전별로 기능이 다를 수 있기때문에 프로젝트를 설치할 때 패키지도 동일한 버전을 설치하지 않으면 문제가 생길 수 있음. 이때 설치한 패키지의 버전을 관리하는 파일이 바로 package.json. → 노드 프로젝트를 시작하기전에는 폴더 내부에 무조건 package.json부터 만들고 시작해야한다. npm에서 package.json을 만들수있는 명령어를 제공하고 있음. [윈도우 환경] np..

node.js 2021.11.15

[Node.js] #4 http 모듈로 서버 만들기(2)

3. 쿠키와 세션 이해하기 클라이언트에서 보내는 요청의 단점 → 누가 요청을 보내는지 모름. 로그인 이후 새로고침 후에도 로그아웃이 되지 않는 이유는 클라이언트가 서버에 내가 누군지를 지속적으로 알려주고 있기때문. 내가 누구인지 기억하기 위해서 서버는 요청에 대한 응답을 할 때 쿠키라는것을 같이 보낸다. 쿠키는 유효 기간이 있으며 name=로춘남 과 같은 단순한 '키-값'의 쌍이다. 서버로부터 쿠키가 오면 웹 브라우저는 쿠키를 저장해두었다가 다음에 요청 할 때마다 쿠키를 동봉해서 보낸다. 서버는 요청에 들어있는 쿠키를 읽어서 사용자가 누구인지 파악을 하게 된다. - 쿠키명-쿠키값 : 기본적인 쿠키의값 - Expires=날짜 : 만료 기한. 이 기한이 지나면 쿠키가 제거. - Max-age=초 : Expi..

node.js 2021.11.12

[Node.js] #3 http 모듈로 서버 만들기(1)

1. 요청과 응답 이해하기 서버는 클라이언트가 있기에 동작하며, 클라이언트에서 서버로 요청(request)을 보내고, 서버에서는 요청의 내용을 읽고 처리한 뒤 클라이언트에 응답(response)을 보낸다. 요청과 응답을 바로 이벤트 방식이라고 표현한다. 클라이언트로부터 요청이 왔을 때 어떤 작업을 수행할지 이벤트 리스너를 미리 등록해야함. 아래는 가장 기본적인 서버의 요청과 응답 const http = require('http'); http.createServer((req, res) => { res.writeHead(200, { 'Content-Type' : 'text.html; charset=utf-8' }); res.write('Hello Node!'); res.end('Hello Server!');..

node.js 2021.11.12

[Node.js] #2노드의 기능

1. REPL 사용하기 자바스크립트는 스크립트 언어이므로 미리 컴파일을 하지 않아도 즉석에서 코드를 실행 할 수 있음. 노드도 비슷한 콘솔을 제공하는데, 입력한 코드를 읽고(Read), 해석하고(Eval), 결과물을 반환하고(Print), 종료할 때까지 반복한다(Loop) 라고해서 REPL라고 부름(Read Eval Print Loop). 읽고, 해석한 뒤 바로 결과물을 출력했다. REPL은 한 두줄짜리를 테스트하기엔 좋지만 여러줄을 실행하기에는 불편함. 2. JS 파일 실행하기 코드가 길 경우에는 코드자체를 자바스크립트 파일로 작성하여 파일을 통쨰로 실행하는 것이 좋다. ex) node [자바스크립트 파일 경로] 3. 모듈로 만들기 모듈 : 특정한 기능을 하는 함수나 변수들의 집합. 모듈은 하나의 프로..

node.js 2021.11.11

[Node.js] #1 node.js 첫 시작. 노드(node.js) 란?

Node.js 란? : Chrome V8 JavaScript 엔진으로 빌드된 Javascript 런타임. 서버 : 네트워크를 통해 클라이언트에 정보나 서비스를 제공하는 컴퓨터 또는 프로그램을 말함 노드는 자바스크립트 프로그램이 서버로서 기능하기 위한 도구를 제공하므로 서버 역할을 수행 할 수 있음. 노드의 특성 1. 자바스크립트 런타임 쉽게 말하면 자바스크립트 실행기로 이해 할 수 있다. 기존에는 자바스크립트를 웹 브라우저 위에서만 실행 할 수 있었음. V8과 libuv는 C와 C++로 구현되어 있지만 노드가 알아서 연결해주기때문에 노드를 사용 할 때 C와 C++는 몰라도 실행 가능하다. 2. 이벤트 기반 이벤트 기반(event-driven)이란 이벤트가 발생할 때 미리 지정해둔 작업을 수행하는 방식을 ..

node.js 2021.11.11
728x90