본문 바로가기

JavaScript/Node.js27

Node) API 사용량 제한하기 (express-rate-limit) 안녕하세요, 코린이의 코딩 학습기 채니 입니다. [Node.js 교과서]의 책을 참고하여 포스팅한 개인 공부 내용입니다. API 사용량 제한하기 - 과도한 API 사용으로 인해 서버에 무리가 갈 수 있음 - 무료 사용자는 1시간에 10번 허용, 유료 사용자는 1시간에 100번 허용 등 API 사용량을 제한 패키지 설치 $ yarn add express-rate-limit express-rate-limit 패키지를 이용하여 API 사용량을 제한할 수 있습니다. API 별로 혹은 Router 별로 미들웨어를 만들어 사용합니다. 미들웨어 생성 middlewares/index.ts const limiter = rateLimit({ windowMs: 60 * 10000, max: (req: Request, res.. 2023. 8. 28.
Node) 노드버드 SNS 만들기 - 게시글, 이미지 업로드 하기 안녕하세요, 코린이의 코딩 학습기 채니 입니다. [Node.js 교과서]의 책을 참고하여 포스팅한 개인 공부 내용입니다. 노드버드 SNS 만들기 - 게시글, 이미지 업로드하기 모델 구조 User.ts import { DataTypes, Model, Sequelize } from "sequelize"; import Post from "./post"; type ProviderType = "local" | "kakao"; class User extends Model { public readonly id: number; public email: string; public nick: string; public password: string; public provider: ProviderType; public sn.. 2023. 7. 31.
Node) Sequelize Migration 안녕하세요, 코린이의 코딩 학습기 채니 입니다. 개인 포스팅용으로 내용에 오류 및 잘못된 정보가 있을 수 있습니다. Sequelize Migration - 운영 단계에서 데이터베이스 스키마 변경이 편리 - 직접적인 스키마 변경을 할 순 있지만 번거롭고, 위험도가 높음 Sequelize Migration 방법 Migration 생성 $ sequelize migration:create 파일명 위 명령어를 작성하면, "타임스탬프-파일명.js" 파일이 생성됩니다. Migration 파일 "use strict"; /** @type {import('sequelize-cli').Migration} */ module.exports = { async up(queryInterface, Sequelize) { /** * A.. 2023. 7. 28.
Node) 사용자 인증 정보 확인 후 다음 미들웨어에게 해당 정보 넘겨주기 안녕하세요, 코린이의 코딩 학습기 채니 입니다. 개인 포스팅용으로 내용에 오류 및 잘못된 정보가 있을 수 있습니다. 사용자 인증 정보 확인 후 다음 미들웨어에게 해당 정보 넘겨주기 API에서 사용자 정보를 확인하고 정보가 없다면 오류를 던져주는 식으로 구현을 했었지만 코드가 중복되어 이를 미들웨어로 분리시켰습니다. 해당 미들웨어에서는 사용자 정보 확인 → 정보가 없다면 상황에 따라 null | Error / 정보가 있다면 userId를 넘겨줍니다. Auth.ts - getUserFromToken /** * jwt 토큰 검증 */ const getUserFromToken = async (req: Request) => { const token = req.headers.authorization; if (!to.. 2023. 2. 3.
Node) 부모 라우터의 req.params를 자식 라우터에게 넘기기 - 중첩라우터 안녕하세요, 코린이의 코딩 학습기 채니 입니다. 개인 포스팅용으로 내용에 오류 및 잘못된 정보가 있을 수 있습니다. 라우터 내에 라우터를 설정할 때, 부모 라우터의 params 값이 넘어오지 않은 경우가 생겼습니다. (req.params) 구조 index.ts (부모라우터) app.use("/post", postRouter); app.use("/post/:id/comments", postCommentRouter); postCommentRouter.ts (자식라우터) router.get("/", getComments); router.post("/", [body("comment").exists(), body("vote_question_id").exists(), validatorErrorCheck], crea.. 2023. 2. 2.
Node) React + Node로 infinity scroll 페이징 처리 (observer) 보호되어 있는 글 입니다. 2023. 1. 25.