Node 강의 65

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

1-9 쿠키와 세션

1. 쿠키와 세션쿠키(Cookie) : 브라우저가 서버로부터 응답으로 Set-Cookie헤더를                        받은 경우 해당 데이터를 저장한 뒤 모든 요청에 포함하여 보냅니다. ex) naver.com 같은 웹 사이트를 방문할 때 마다      이전에 방문했던 정보를 기억하는 데이터 파일입니다. 여러 사이트에 공유할 수 있기 때문에 보안에 취약할 수 있습니다. 쿠키는 userId=user-1321;userName=sparta 와 같이 문자열 형식으로 존재하며쿠키 간에는 세미콜론(;)으로 구분됩니다. 세션(Session) : 쿠기를 기반으로 구성된 기술입니다. 클라이언트 마음대로 데이터를 확인 할 수 있던                           쿠키와는 다르게 세션은 데이..

Node 강의/숙련 2024.09.07

1-8 Prisma Method(+Posts 게시판 만들기 서버와 DB 연결)

1. Prisma의 Method 살펴보기 및 밑 작업하기Prisma는 mongoose와 동일하게, findMany(), findFirst(), findUnique() 등 다양한 메서드를 지원합니다. mongoose를 사용했을 때는 Schema를 이용하였다면,Prisma에서는 Prisma Client를 이용해 MySQL의 데이터를 조작할  것 입니다. 저번 페이지에서 만든 Posts 테이블에서 생성 및 수정할 때 필수 인자값 3개를이용해 권한 검증 및 데이터 생성을 구현해보겠습니다. 먼저, routes/posts.router.js 파일 생성 import express from "express"import { PrismaClient } from "@prisma/client"const router = expr..

Node 강의/숙련 2024.09.07

1-7 ORM과 Prisma(+ Posts 게시판 만들기 DB 밑 작업)

1. Prisma 란? Prisma는 ORM(Object Relational Mapping)으로써JavaScript 객체(Object)와 데이터베이스의 관계(Relation)을 연결(Mapping)해주는 도구입니다. Node.js 환경에서는 TypeORM, Prisma, Sequelize 등 다양한 ORM이 존재합니다. 하지만, 우리는 JavaScript 뿐만 아니라 TypeScript에서도 사용할 수 있고,ORM 개념을 학습하기 쉬운 Prisma를 배워볼 예정입니다. 2. Prisma vs Mongoose Mongoose : 1. ODM(Object Document Mapping)으로 JavaScript 객체를 Document와 연결하지만, 2. mongoose는 지원하는 데이터베이스가 MongoDB ..

Node 강의/숙련 2024.09.06

1-6 Raw Query시작하기

1. Raw Query란?Raw Query 데이터베이스에 SQL(Structured Query Language)을 이용하여 직접 쿼리(Query)를 요청하는 것 2. Raw Query 시작하기 Raw Query를 사용하기 위해 폴더를 생성하고, 라이브러리 설치, 프로젝트 구성을 진행해봅시다. Node.js에서 Raw Query를 사용하기 위해서는 AWS RDS에서 대여받은MYSQL에 연결을 도와주는 데이터베이스 드라이버가 필요합니다. 이번에는 데이터베이스에 직접 SQL를 요청하여, 테이블을 생성하거나,데이터를 삽입하는 다양한 API를 mysql2 라이브러리를 이용하여 구현해봅시다. VScode에서yarn add express yarn add mysql2 를 입력해 MySQL 드라이버를 설치합니다. 우리가..

Node 강의/숙련 2024.09.06

1-5 SQL 제약조건

1. 제약 조건(Constraint)이란? 제약 조건(Constraint)은 각 컬럼들 간의 제한사항을 관리하고,조건을 위반하는 데이터를 방지하여 데이터베이스의 무결성(Integrity)을보장하는 규칙입니다. → 무결성(Integrity)은 데이터가 결함없이 정확하고 완전한 상태를 의미합니다. 2. 제약 조건의 종류고유(Unique) 제약 조건NULL 제약 조건기본 키 (Primary Key) 제약 조건외래 키 (Foreign Key) 제약 조건 고유(Unique) 제약 조건  - 테이블에 소속된 특정 컬럼이 중복된 키를 가질 수 없는 조건- 사용자 아이디, 이메일과 같은 고유한 정보를 저장할 때 사용합니다. NULL 제약 조건 - 특정 컬럼이 아무런 값을 입력받지 않도록 설정하거나,  무조건 값을 입력..

Node 강의/숙련 2024.09.05