본문 바로가기

반응형

전체 글

(174)
[ Node.js + Express ] JWT 1. JWT란? 공식 웹페이지에는 JWT을 아래와 같이 기술하고 있다. JSON Web Token (JWT) is an open standard that defines a compact and self-contained way for securely transmitting information between parties as a JSON object. 쉽게 말해서 JWT는 두 당사자 간에 JSON 형태의 데이터를 안전하게 전송하는 방법이다. 만약에 누나 나에게 JWT가 뭐냐고 물어본다면, 나는 '비밀키로 서명된 JSON 형태의 데이터'라고 말할거다. 이게 내가 이해한 JWT의 정체다. 아래는 JWT의 예시다. 그림을 보면 알겠지만 JWT는 크게 세 부분으로 나뉘어져 있다. 2. JWT 구조 JWT는 H..
[ Node.js + Express ] 쿠키와 세션으로 초간단 로그인 구현 1. 쿠키 1) 개념 쿠키는 브라우저가 가지고 있는 데이터 그이상 그이하도 아니다. MDN 웹문서에는 쿠키를 아래와 같이 기술하고 있다. HTTP 쿠키(웹 쿠키, 브라우저 쿠키)는 서버가 사용자의 웹 브라우저에 전송하는 작은 데이터 조각입니다. 브라우저는 그 데이터 조각들을 저장해 놓았다가, 동일한 서버에 재 요청 시 저장된 데이터를 함께 전송합니다. MDN 웹문서에서 아주 잘 설명해놨다. 그러면 쿠키는 왜 필요할까? 이는 HTTP의 'stateless' 특성 때문이다. HTTP는 클라이언트의 요청 내용을 기억하지 않기 때문에 클라이언트는 매 요청마다 자신의 정보를 서버에게 알려줄 필요가 있다. 쿠키는 클라이언트가 서버에게 정보를 제공할때 사용하는 수단중 하나다. 즉, 쿠키는 클라이언트의 상태를 알려주는..
[ MongoDB ] mongoose populate populate는 join과 유사한 개념이다. 우선 공식문서를 보면 populate를 아래와 같이 기술하고 있다. Population is the process of automatically replacing the specified paths in the document with document(s) from other collection(s). population은 document의 필드값을 다른 collection의 특정 document로 치환하는 과정이다. 이해하기 쉽게 그림으로 보면 아래와 같다. 두 개의 collection(posts, users)가 있고, 좌우는 각각 하나의 document다. 좌측의 author 필드값을 보면 ObjectId로 되어 있는 것을 알 수 있다. 여기서 popul..
[ Express ] nunjucks 사용법 정리 express에서 nunjucks 템플릿 엔진 사용법에 대해 알아보자. 설치 및 설정 1) 패키지 설치 npm i nunjucks 2) express 기본 구조 const express = require('express'); const nunjucks = require('nunjucks'); const app = express(); app.set('view engine', 'html'); // a nunjucks.configure('views', { // b watch: true, express: app }); app.get('/', function(req, res) { // c res.render('layout', { object }); }); app.listen(8080, () => { console..
[ JavaScript ] 프로토타입(Prototype) 자바스크립트는 프로토타입 기반 객체지향 프그래밍 언어이다. 프로토타입을 공부하면 자바스크립트의 동작 원리를 더 잘 이해할 수 있다. 아마 자바스크립트를 공부해본 사람이라면 MDN 웹문서에서 ‘Prototype’이라는 단어를 많이 봤을 것이다. 나는 주로 MDN 웹문서를 기반으로 공부하기 때문에 ‘Prototype’이 굉장히 익숙한 단어였다. 익숙하기만 하고 뭔지 모르는.. 그런 단어였다. 그래서 ‘언젠가는 공부해야지'라고 생각만 하고 정작 (귀찮아서)정리 하지는 않았다. 하지만 더이상 미루면 평생 정리하지 않을 것 같아 오늘 굳은 다짐을 하고 책상에 앉았다. 오늘의 목표는 프로토타입을 정복하는 것이다!!! 프로토타입이란? MDN 웹문서에는 아래와 같이 기술하고 있다. Prototypes are the m..
[ MongoDB ] mongoose로 MongoDB 쉽게 사용하기 이 글은 MongoDB와 Mongoose 패키지가 설치된 상태를 가정한다. MongoDB의 핵심 용어를 살펴보고, express에서 mongoose를 통해 간단한 CRUD 작업을 하는게 오늘의 학습 목표다. 자세하게 공부하면 끝도 없기 때문에, 어떤 식으로 동작하는지만 이해하고 나머지 기능은 프로젝트를 하면서 필요할때 찾아 쓰면 된다. 공식문서에 잘 나와있다. MongoDB 용어 RDBMS와 비교하는게 가장 직관적이어서 이 둘의 대응 관계를 나타내는 그림을 가져와봤다. 사진에 첨부한 링크로 가면 MongoDB에 대해 아주 상세하게 설명해놨으니 가서 보는 것도 추천한다. 위 그림과 같이, MongoDB는 크게 네 가지 요소로 이루어져 있다. Database 하나 이상의 collection을 가질 수 있는 ..
[ Express ] Express 첫 시작, 라우팅과 미들웨어 1. 라우팅(Routing) 라우팅은 URI(또는 경로) 및 특정한 HTTP 요청 메소드(GET, POST 등)인 특정 엔드포인트에 대한 클라이언트 요청에 애플리케이션이 응답하는 방법을 결정하는 것을 말합니다. Express 공식문서에서 그대로 가져온 문장이다. 영어 번역본이라 그런지 문장이 매끄럽지 못하다고 느껴서 내가 두 파트로 나눠봤다. 1) 클라이언트 요청은 URI + HTTP 메소드로 이루어진다. 네이버 루트에 접속하는 경우 → 'https://www.naver.com/'(URI) + Enter(HTTP GET) 2) 라우팅은 클라이언트 요청에 응답하는 방법을 말한다. 클라이언트 요청은 URI와 HTTP 메소드로 이루어진다고 했다. 그런데 요청에 대한 응답을 해주기 위해서는 URI가 어떤 구조로..
[ Node.js ] 모듈 시스템 (module.exports와 exports) 모듈? - 모듈이란 독립적인 소프트웨어를 말한다. - 자바스크립트에서는 파일 하나하나가 모듈이다. - 모듈은 자신만의 독립적인 스코프를 가져서 전역변수의 중복 문제가 발생하지 않는다. - 모듈은 module.exports 또는 exports 객체를 통해 외부로 공개한다. - 외부에서는 require 함수로 모듈을 사용할 수 있다. 참고! 브라우저(클라이언트)에서 여러개의 script tag를 불러오면 하나의 파일로 병합해 동일한 유효범위를 갖는다. 전역 충돌 발생 가능. module.exports vs exports - 공식 문서에 따르면 exports는 module.exports를 참조한다. - 이 둘은 'key: value' 형태면 항상 같다고 할 수 있다. - 하지만 'key: value' 형태가 ..

반응형