📡 백엔드/⭐ Node.js

    [Nodejs] passport 모듈로 로컬 로그인 전략 구현하기

    ✅ passport 모듈 회원가입과 로그인을 구현할 때 세션과 쿠키 처리등의 복잡한 작업을 쉽게 해주는 모듈 검증되어 있어 안전하게 사용할 수 있다 passport 모듈로 카카오, 구글, 페이스북 로그인을 위한 OAuth 도 사용 가능하다 ✅ 의존성 추가 및 설치 npm i passport passport-local passport-kakao bcrypt 🔨 app.js const passport = require('passport'); ... const passportConfig = require('./passport'); ... passportConfig(); app.use(passport.initialize()); app.use(passport.session()); passport.initializ..

    [Nodejs] Sequelize 로 SQL 쿼리 사용하기

    ✅ CRUD 작업 시작하기 Sequelize 로 받는 쿼리는 프로미스를 반환하기 때문에 .then 을 붙여 결괏값을 받을 수 있다 async/await 문법도 사용할 수 있다 ✅ Create // INSERT INTO nodejs.users (email, nick, password, ...) // VALUES ('gengminy@gengminy.com', 'gengminy', '1234', ...); const { User } = require('../models'); User.create({ email: 'gengminy@gengminy.com', nick: 'gengminy', password: '1234', ... }); models 모듈에서 User 모델을 불러와 create 메소드를 사용한다 데..

    [Nodejs] Sequelize 로 SQL 데이터베이스 연동하기

    ✅ Sequelize ORM으로 분류되는 라이브러리 즉 자바스크립트 객체와 데이터베이스의 릴레이션을 매핑해주는 도구이다 📝ORM(Object- relational Mapping) 객체 관계 매핑 데이터베이스와 객체지향 프로그래밍 언어 사이에 호환되지 않는 데이터를 변환하는 프로그래밍 기법 객체지향 언어에서 사용할 수 있는 가상 객체 DB를 구축하는 방법이다 ✅ Sequelize 의존성 추가 및 초기 세팅 npm i sequelize sequelize-cli mysql2 npx sequelize init 🔨 config/config.json { "development": { "username": "root", "password": null, "database": "database_development", ..

    [Nodejs] Router 객체로 라우팅 파일 분리

    ✅ Router 주소별로 분기 처리를 할 때 app.js 에서 if문을 사용하게 된다면 코드가 복잡해지고 확장성이 떨어진다 express에서는 라우터를 분리하는 방법을 제공한다 🔨 Router 객체 생성 const express = require('express'); const router = express.Router(); ✅ 예제 router 폴더 안에 index.js 와 user.js 를 나누어 라우터 파일을 생성했다 두 파일을 app.js 에서 사용해보는 예제 🔨 index.js const express = require('express'); const router = express.Router(); router.get('/', (req, res) =>{ res.send('this is index..

    [Nodejs] 미들웨어의 사용과 자주 쓰이는 미들웨어

    ✅ 미들웨어(middleware) request와 response 사이에 위치하여 미들웨어(middleware)라고 불린다 ✅ 미들웨어의 사용 예시 app.use(미들웨어) 모든 경로 요청에서 미들웨어 사용 app.use('/abc', 미들웨어) abc로 시작하는 모든 요청에서 미들웨어 사용 app.post('/abc', 미들웨어) abc로 시작하는 POST 요청에서 미들웨어 사용 app.use 나 app.get 같은 라우터에 미들웨어를 여러 개 장착 가능하다 라우터 끝단에서 반드시 next 함수를 호출해야 다음 미들웨어를 실행할 수 있다 (보통 미들웨어는 내부적으로 next 함수를 호출하기에 따로 적어줄 필요는 없다) 미들웨어는 동시에 여러개를 장착할 수도 있다 ✅ 실무에서 자주 사용하는 패키지 ✔ m..

    [Nodejs] express 서버 열기

    ✅ package.json 초기화 및 express 모듈 설치 npm init ... npm install express ✅ express import 및 express 객체 생성 const express = require('express'); const app = express(); ✅ app.set 과 app.get app.set(키, 값)으로 데이터 저장 app.get(키)로 데이터 가져올 수 있음 ✅ GET 메소드 라우팅 app.get('/', (req, res)=>{ res.send('Welcome!'); }); ✅ 서버 실행 app.listen(app.get('port'), ()=>{ console.log(`Server online on port ${app.get('port')}`); }); ..

    [Nodejs] 쿠키와 세션

    ✅ 쿠키 클라이언트의 정보를 기억하기 위해 서버는 요청에 대한 응답으로 쿠키를 같이 보내고 클라이언트의 웹 브라우저는 다음 요청에 쿠키를 자동으로 같이 보내어 서버가 쿠키를 읽고 클라이언트가 누구인지 파악한다 쿠키는 request의 헤더(Cookie)에 담겨 서버에 전송된다 브라우저는 response의 header (Set-Cookie)를 읽어서 저장한다 const http = require('http'); const PORT = 8080; http.createServer(async (req, res) =>{ try{ console.log(req.url, req.headers.cookie); res.writeHead(200, {'Set-Cookie' : 'name=gengminy'}); return re..

    [Nodejs] http 모듈로 간단한 REST API 사용

    ✅ http 모듈 불러오기 const http = require('http'); ✅ http 서버 생성 const http = require('http'); const PORT = 8080; http.createServer(async (req, res) =>{ res.writeHead(200, {'Content-Type' : 'text/html; charset=utf-8'}); return res.end("hello my server"); } ).listen(PORT, ()=>{ console.log(`server online on port ${PORT}!`); }); header 에 http status를 같이 담아서 전송 💻console 💻client - localhost:8080 ✅ REST API..