Node 강의 60

2-8 express-session

1. express-session express-session은 Express.js에서 세션(Session)기능을 쉽게 구현하기 위한 미들웨어입니다. 세션(Session)을 사용하기 위해서는 사용자 인증과 세션 스토리지를 통해서 사용자 정보를 저장하고,세션 정보가 담긴 쿠키를 사용자에게 발급하는 과정이 필요하였습니다.express-session은 이런 복잡한 과정을 생략하여 간단하게 세션 기능을 구현할 수 있도록 도와주는 미들웨어입니다. 2. express-session 시작하기 express-session은 세션 ID를 클라이언트에게 발급하고,이 세션 ID를 통해 서버는 클라이언트의 상태를 추적할 수 있습니다. 즉, 클라이언트 세션 ID를 발급받은 후에는 모든 서버 요청마다 세션 ID가포함된 쿠키를 전..

Node 강의/숙련 2024.09.09

2-7 [게시판 프로젝트] Prisma Transaction

1. Prisma의 Transaction Prisma의 트랜잭션은 여러 개의 쿼리를 하나의 트랜잭션으로 수행할 수 있는Sequential 트랜잭션과 Prisma가 자체적으로 트랜잭션의 성공과 실패를관리하는 Interactive 트랜잭션이 존재합니다. 2. Sequential 트랜잭션- Sequential 트랜잭션 1import { PrismaClient } from '@prisma/client';const prisma = new PrismaClient();// Sequential 트랜잭션은 순차적으로 실행됩니다.// 결과값은 각 쿼리의 순서대로 배열에 담겨 반환됩니다.const [posts, comments] = await prisma.$transaction([  prisma.posts.findMany(..

Node 강의/숙련 2024.09.09

2-6 트랜잭션(Transcation)

1. 트랜잭션(Transcation)트랜잭션(Transcation)은 작업의 완정성을 보장해주기 위해 사용되는 개념입니다.특정한 작업을 전부 처리하거나, 전부 실패하게 만들어 데이터의 일관성을 보장해줍니다. 트랜잭션(Tanscation)을 사용하는 대표적인 이유는 작업의 단위를 하나의 쿼리에 종속하는 것이 아닌,여러개의 작업(쿼리)을 묶어 하나의 작업 단위로 그룹화하여 처리하는 작업을 뜻합니다. 2. 트랜잭션(Transcation) 사용 이유? 여러분들은 트랜젝션을 이용해 다양한 문제 상황들을 해결할 수 있게 됩니다. ex) 은행 계좌이체 1. A 고객의 계좌에서 1000원 차감2. B 고객의 계좌에 1000원 추가 1번 작업 이후 2번 작업을 수행하던 중 에러가 발생하게 될 경우A 고객 계좌에서만 10..

Node 강의/숙련 2024.09.09

2-5 [게시글 프로젝트] 댓글 생성 API

1. 게시글에 댓글 생성 API댓글 기능은 게시글 기능과 부모 - 자식 간의 관계로 구성된다. 일반적인 사이트를 생각해보면, 게시글과 별도로 댓글이 존재하지 않고,특정 게시글에 대한 하위 개념으로 존재합니다. 그렇기 때문에, 댓글 기능을 구현하기 위해서는 게시글이 필수적입니다. 즉, 댓글 API의 URL은 게시글 API의 URL을 기반으로 작성됩니다.ex) api/posts/:postId/comments 1) 댓글 생성 API(Router 추가 아래에 존재합니다)routes/comments.router.js 파일을 생성하고 import express from "express";import prisma from "../src/utils/prisma/index.js";import authMiddleware ..

Node 강의/숙련 2024.09.09

2-4 [게시판 프로젝트] 게시글 생성 API

1. [게시판 프로젝트] 게시글 생성 API사용자(Users)는 게시글을  여러 개를 만들 수 있다. → 1 : N 관계를 가지고 있습니다.현재 로그인 한 사용자의 정보가 존재하였을 때만 게시글을 생성할 수 있도록 구현 돼야 합니다. routes/posts.router.js 파일을 생성하고, app.js파일에 라우터를 추가하도록 하겠습니다.2. 게시글 생성 API1) posts.router.js 내용 추가하기import express from "express";import prisma from "../src/utils/prisma/index.js";import authMiddleware from "../middlewares/auth.middleware.js";const PostsRouter = expre..

Node 강의/숙련 2024.09.09

2-3 [게시판 프로젝트] 미들웨어

1. 로그(Log) 미들웨어 로그 미들웨어(Log Middleware)는 클라이언트의 모든 요청 사항을기록하여 서버의 상태를 모니터링하기 위한 미들웨어입니다. 로그 미들웨어는 클라이언트의 요청을 기록하여 어플리케이션을 모니터링하고문제가 발생할 때 빠르게 진단할 수 있습니다. 또한, 로그 데이터는 사용자의 행동을 분석하는 등 데이터 분석 작업에도 활용할 수 있습니다. 규모가 큰 프로젝트를 진행하게 되면, 화면에 표시되는 모든 로그를 일일이 확인하는 것은 불가능에 가깝습니다.이런 경우를 대비해 로그 기능을 지원하는 morgan, winston과 같은 라이브러리를 사용하거나AWSCloudWatch, Datadog와 같은 외부 모니터링 솔루션 서비스를 이용해 로그를 수집하거나 관리할 수 있습니다. → 최근에는 ..

Node 강의/숙련 2024.09.09

2-2 Access Token, Refresh Token

1. Access Token이 무엇인가? Access Token은 사용자의 인증(ex : 로그인)이 완료된 후 해당 사용자를 인증하는 용도로 발급하는 토큰입니다. 이전에 쿠키(Cookie)에 jwt를 설정하고, 지정된 만료 시간이지나면 인증이 만료되는 구조 또한 Access Token이라 부른다. 인증 요청시 Access Token을 사용하면,토큰을 생성할 때 사용한 비밀키(Secret Key)로 인증을 처리하게 됩니다.이 방식은 복잡한 설계나 여러 분기 처리 없이 코드를 구현할 수 있다는 장점을 가지고 있습니다. Access Token은 Stateless(무상태) 즉, Node.js 서버가 재시작되더라도 동일하게 작동하게 됩니다.이는 jwt를 이용해 사용자의 인증 여부는 확인할 수 있지만, 처음 토큰을..

Node 강의/숙련 2024.09.09

2-1 [게시판 프로젝트] 인증 인가 (로그인, 회원 가입 API)

1. 인증, 인가 살펴보기 1) 인증(Authentication)인증(Autentication)은 서비스를 이용하려는 사용자가 인증된 신분을 가진 사람이 맞는지 검증하는 작업 ex) 로그인 기능!!! 로그인 기능은 일반적으로 id, password의 조합으로 이뤄집니다. 2) 인가(Authorization)  인가(Authorization)는 이미 인증된 사용자가 특정 리소스에 접근하거나 특정 작업을 수행할 수 있는권한이 있는지 검증하는 작업을 뜻 합니다. 인증된 사용자 즉, 로그인 된 사용자만 게시글을 작성할 수 있는지 검증한다면,인가(Authorization) 과정이라고 부릅니다. 인가(Authorization) 기능은 사용자 인증 미들웨어를 통해서 구현할 예정 입니다. 2. 로그인, 회원가입 API..

Node 강의/숙련 2024.09.08

1-11 [게시판 프로젝트] 시작하기 (DB 설계 및 Prisma 모델 정의)

1. [게시판 프로젝트] 설계하기 각 테이블 간의 관계 및 요구사항을 정리하면, 사용자(Users)는 1개의 사용자 정보(UserInfo)를 가진다.= Users 테이블과 UserInfo 테이블은 1 : 1 관계를 가진다. 사용자(Users)는 여러 개의 게시글(Posts)을 등록할 수 있다.= Users 테이블과 Posts 테이블은 1 : N 관계를 가진다. 사용자(Users)는 여러 개의 댓글(Comments)을 작성할 수 있다.= Users 테이블과 Comments 테이블은 1 : N 관계를 가진다. 하나의 게시글(Posts)은 여러 개의 댓글(Comments)이 작성될 수 있다.= Posts 테이블과 Comments 테이블은 1 : N 관계를 가진다. 2. [게시판 프로젝트] 디렉토리 구성하기프로..

Node 강의/숙련 2024.09.08

1-10 JWT

1. JWT가 무엇인가? JWT(Json Web Token)은 웹 표준으로써, 서버와 클라이언트 사이에서정보를 안전하게 전송하기 위해 도움을 주는 웹 토큰(Web Token)입니다. - JSON 형태의 데이터를 안전하게 전송하고 검증할 수 있는 기능을 제공합니다.- 인터넷 표준으로서 자리잡은 규격입니다.- 다양한 암호화 알고리즘을 사용할 수 있어, 신뢰성을 보장합니다.- header.payload.signature 의 형식으로 3가지의 데이터를 포함합니다.→ 때문에, JWT 형식으로 변환 된 데이터는 ~~~.~~~.~~~ 데이터 입니다. 1) 어떻게 생겼는가?JWT(Json Web Token)은 크게 헤더(Header), 페이로드(PayLoad), 서명(Signature)로 구성 됩니다.각각의 부분은 점..

Node 강의/숙련 2024.09.07