Node.js Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. nodejs.org OAuth ▶ OAuth 란? Open Authorization : 서비스 제공자가 다른 서비스에게 데이터를 제공하기 위해 서비스 사용자에게 제공하는 사용자 인증방식의 표준 ▶ OAuth의 동작방식 서비스 제공자에게 인증 요청 → 인증 완료 후 사용자 정보를 요청한 서비스로 전달 → 인증 정보를 이용해 서비스 제공자의 데이터 사용 ex) 구글 캘린더 연동 서비스를 만든다고 가정하면, 구글 OAuth 인증 요청 → 인증된 OAuth Token을 기록 → OAuth Token을 사용하여 구글 캘린더 API 사용 ▶ OAuth와 로그인 - OAut..
Node.js Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. nodejs.org JWT ▶ JWT 란? JSON Web Token : 인증을 위한 정보를 특별한 저장소를 이용하지 않고, 전자 서명을 이용하여 확인하는 방법 ▶ JWT의 구성 - header : 토큰의 타입(jwt), 데이터 서명 방식 - payload : 전달되는 데이터 - signature : header 와 payload의 전자서명 JWT 는 Web Token → 데이터를 웹에서 사용하기 위한 스펙이므로 웹에서 문제없이 사용할 수 있는 문자열로만 구성된 base64 인코딩을 사용 참고) JWT 홈페이지 JWT.IO JSON Web Tokens are a..
Node.js Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. nodejs.org 회원과 게시글 연동하기 ▶ 회원-게시글 연동 기능 설명 1) 게시글 작성 시 로그인된 회원 정보를 작성자로 추가 2) 게시글-작성자는 populate하여 사용하도록 구현 3) 게시글 수정, 삭제 시 로그인된 유저와 작성자가 일치하는지 확인 4) 작성자의 게시글 모아 보기 기능 구현 ▶ 회원-게시글 연동 기능 구현하기 1) PostSchema 수정 - PostSchema에 author 추가 - populate를 사용하기 위해 ObjectID 사용 - ref를 유저 모델의 이름인 'User'로 선언 ... author: { type: Schema..
Node.js Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. nodejs.org 회원가입 구현하기 ▶ 구현할 회원가입 기능 설명 이메일, 이름, 패스워드의 간단한 정도만 사용 1) 회원가입 페이지 구현 2) script를 이용해 이메일 형식, 비밀번호 길이 및 비밀번호확인 문자열과 일치여부 확인 3) form을 이용해 post 요청 전송 4) 회원가입 처리 및 redirect * 비밀번호 저장 시 암호화하여 저장 (Hash) Hash : 문자열을 되돌릴 수 없는 방식으로 암호화하는 방법 → hash 출력값으로는 사용자의 원래 비밀번호를 알아낼 수 없음 → 비밀번호의 Hash 값을 데이터베이스에 저장하고, 로그인 시 전달된..
Node.js Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. nodejs.org Async Request Handler ▶ request handler의 오류처리 방법 - promise().catch(next) - async function, try ~ catch, next ▶ async request handler async의 비동기 처리는 매우 편리하지만 매번 try - catch 구문을 작성하는 것은 귀찮고 실수하기 쉬움 → request handler를 async function으로 작성하면서 try ~ catch, next를 자동으로 할 수 있도록 구성한 아이디어 const asyncHandler = (reque..
Node.js Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. nodejs.org 프로젝트 개요 ▶ 간단한 게시판 제작하기 - PUG Template Engine 사용하기 - 기본적인 CRUD 동작을 하는 웹 만들기 - PM2 Process Manager 이용하여 Node.js 어플리케이션 관리하기 ▶ 구현할 기능들 게시판 기능 게시글 목록 / 상세보기 / 작성 / 수정 / 삭제 회원 기능 회원가입 / 로그인 / 비밀번호 찾기 추가 기능 Pagination / 구글 로그인 / 유저 작성글 모아보기 Template Engine ▶ Template Engine 이란 ? 서버에서 클라이언트로 보낼 HTML의 형태를 미리 템플릿으..
Node.js Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. nodejs.org Mongoose ODM ▶ Mongoose ODM 이란? MongDB의 Collection에 집중하여 관리하도록 도와주는 패키지 → MongoDB의 Collection을 JavaScript의 model로써 만들어놓고 이 model을 통해 MongoDB의 데이터들에 쉽게 접근하고 관련 기능들을 쉽게 사용할 수 있도록 도와줌 * ODM (Object Data Modeling) : Data를 Object로 Model화하여 관리 ▶ Mongoose를 사용하는 이유 1) 연결관리 : MongoDB에서 기본 제공하는 Node.js 드라이버는 연결상태를 ..
Node.js Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. nodejs.org MongoDB ▶ MongoDB 란? 대표적인 NoSQL, Document DB. Mongo는 Humongous 에서 따온 말로, 엄청나게 큰 DB 라는 의미 → 대용량 데이터를 처리하기 좋게 만들어짐 ▶ NoSQL vs. RDB RDB (Relational Database) - 관계형 데이터베이스. - 자료들의 관계를 주요하게 다룸 - SQL 질의어를 사용하기 위해 데이터를 구조화해야 함 // MySQL CREATE DATABASE simple_board CREATE TABLE posts ( id NOT NULL AUTO INCREAMENT..
Node.js Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. nodejs.org REST API ▶ REST API 란? REST + API : REST 아키텍쳐를 준수하는 웹 API (RESTful API라고 부르기도 함) - API (Application Programming Interface) : 서비스나 프로그램 간에 미리 정해진 기능을 실행할 수 있도록 하는 규약 - REST (REpresentational State Transfer) : 웹에서 자료를 전송하기 위한 표현 방법에 대한 아키텍쳐. ▶ REST API 기본 가이드 REST를 정확하게 구현하기 위해서는 많은 제한조건이 있지만, 'URL을 통한 자원의 ..
Node.js Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. nodejs.org Middleware ▶ 미들웨어(Middleware) 란? HTTP 요청과 응답 사이에서 단계별 동작을 수행해주는 함수 - HTTP 요청이 들어온 순간부터 시작됨 - 미들웨어는 HTTP 요청과 응답 객체를 처리하거나 다음 미들웨어를 실행 - HTTP 응답이 마무리될 때까지 미들웨어 동작 사이클이 실행 ▶ Middleware 작성법 req, res, next 를 인자로 갖는 함수를 작성하면 해당 함수는 미들웨어로 동작할 수 있음 - req : HTTP 요청을 처리하는 객체 - res : HTTP 응답을 처리하는 객체 - next : 다음 미들웨..