[NestJS] 내장 파이프(validationPipe)를 사용해서 유효성 검사하기
·
Framework/NestJS
Validation Pipe를 사용하여 유효성 검증을 하는 방법을 정리한 글입니다. 파이프란? NestJS에서 파이프는 HTTP 요청의 핸들러 전/후에 적용되는 중간 단계입니다. 파이프는 요청 데이터를 검증하거나 수정하거나, 응답을 가공하는 등의 역할을 수행하여 요청과 응답을 다룹니다. 가령 사용자가 회원가입을 할 때, 작성한 정보가 모두 유효한 값일 때 회원 가입을 할 수 있도록 하는 것과 같이 값의 유효성을 검사하는데에 파이프가 쓰이게 됩니다. 파이프는 NestJS에서 기본적으로 제공되는 몇 가지 내장 파이프와 사용자가 직접 만들어 사용할 수 있는 커스텀 파이프들이 있습니다. 이 글에서는 Validation Pipe를 사용하여 유효성 검사를 하는 예제에 대해 설명하고 있습니다. 패키지 설치 Valid..
[NestJS] NestJS 프로젝트 첫 시작
·
Framework/NestJS
📚 Nest.js 프로젝트를 만들고, 패키지에 대해 공부한 내용을 정리한 글입니다. 📣 참고 사항 1️⃣ node와 npm이 설치되어있는 것을 가정하고 진행합니다. 2️⃣ node 버전은 21.5.0, npm은 10.2.4버전 입니다 NestJS 프로젝트 시작하기 터미널에서 아래 명령어를 실행해 nest-cli를 설치합니다. @nest/cli는 NestJS에서 제공하는 Command Line Interface이므로 -g 옵션으로 설치하여 전역에서 사용할 수 있도록 해야합니다. npm install -g @nest/cli 새로운 NestJS 애플리케이션을 만드는 명령어입니다. . 은 현재 디렉토리에 만드는 것을 의미합니다. nest new . 디렉토리 경로를 입력해서 만들수도 있습니다. nest new 디..
[SpringBoot] 데이터베이스 스키마 자동 생성 옵션에 대해 알아보자 / spring.jpa.hibernate.ddl-auto
·
Framework/SpringBoot
spring.jpa.hibernate.ddl-auto에 대한 글입니다. application.properties 에서 데이터베이스 관련 속성으로 spring.jpa.hibernate.ddl-auto를 많이 보셨을겁니다. 이 글에서는 이 속성과 주요 값들에 대해 알아보겠습니다. spring.jpa.hibernate.ddl-auto spring.jpa.hibernate.ddl-auto는 스프링 부트 애플리케이션에서 하이버네이트(Hibernate)를 사용할 때, 데이터베이스 스키마를 자동으로 생성, 수정 또는 유지하도록 할 수 있는 속성입니다. 이 속성을 설정함으로써 Hibernate가 데이터베이스 스키마를 자동으로 처리할 수 있습니다. create create는 애플리케이션 실행 시에 스키마를 새로 생성합니..
[Node.js] 몽구스 사용해보기
·
Framework/Node.js
몽구스 사용법과 사용하면서 알게된 내용을 정리한 글입니다. MySQL에 시퀄라이즈가 있다면 몽고디비에는 몽구스(Mongoose)가 있죠! 노드 서버에서 몽고디비로 객체 모델링을 할 수 있는 라이브러리인 몽구스를 사용해봅시다 😁 📕 이 글을 읽기 전 📕 1️⃣ 몽구스를 사용할 node.js 프로젝트 폴더를 미리 만들어주세요! 패키지 설치 npm install express mongoose 익스프레스와 몽구스를 설치합니다. 몽고디비 연결하기 프로젝트 최상단에 app.js 파일을 만들겠습니다. 아래 코드를 app.js 파일에 작성해주세요 const express = require('express'); const mongoose = require('mongoose'); const app = express(); ..
[SpringBoot] created_at 처럼 엔티티 생성할 때 현재 날짜를 디폴트 값으로 지정하기 + 수정일 / Spring Data JPA automatic date creation
·
Framework/SpringBoot
엔티티가 만들어 질 때 현재 날짜를 디폴트 값으로 하는 방법에 대해 작성한 글입니다. 가령 게시글에 관한 테이블이라고 하면 created_at처럼 데이터가 추가되는 시점의 날짜를 저장하는 필드가 있을 것입니다. MySQL에서는 insert 쿼리에서 now() 함수를 쓰거나, 디폴트 값을 주면되는 아주 간단한 문제지만, 스프링에서는 어떻게 검색해야할 지도 잘 모르겠고(본인 얘기1), 내 논리라면 이게 되야 하는데...? 라고 생각하지만 잘 안되는 문제라서(본인 얘기2) 글로 정리하게 되었습니다. 부디 저만 삽질한 것이 아니길... 😈 "Spring Data JPA automatic date creation" 이라고 검색하면 스택 오버 플로우에 답변이 몇 개 있긴 하더라고요... 글은 문제를 해결하는 과정순..
[Vue.js] Vue.js 3 애플리케이션 만들기 / 비쥬얼 스튜디오 확장팩 설치 / 빌드하기
·
Framework
Vue.js 프로젝트를 초기화하는 방법을 정리한 글입니다 🌈 📣 해당 글은 npm이 설치되었다는 전제하에 진행됩니다! Vue 애플리케이션 만들기 node --version 위 명령으로 노드 버전을 확인합니다. Node.js 버전이 16 미만이라면 16 이상 버전으로 업데이트 해주셔야 Vue.js 3.x.x 버전을 사용하실 수 있습니다. npm init vue@latest 위 명령을 통해 create-vue를 설치 및 실행합니다. 그러면 아래처럼 몇 가지 선택 사항에 대해 선택할 수 있습니다. 우선 저는 모두 No로 했습니다. 여러분의 사정에 맞게 체크해주세요.ㅣ cd 프로젝트이름 npm install npm run dev 방금 생성한 프로젝트 폴더로 이동 후 패키지들을 설치합니다. 그리고 실행하면 Vue..
[SpringBoot] 스프링 부트 data.sql이 실행되지 않을 때 (data.sql not working)
·
Framework/SpringBoot
문제 상황 main/resources/data.sql 에 insert 쿼리를 작성하였는데, api를 테스트해보니 data.sql에 있는 쿼리가 적용되지 않았습니다. data.sql INSERT INTO users (name, id, password, ...) VALUES (...); INSERT INTO users (name, id, password, ...) VALUES (...); -- 이하 생략 -- application.properties spring.jpa.defer-datasource-initialization=true spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://lo..
[Node.js] 미들웨어에 대해 알아보자
·
Framework/Node.js
Node.js 공부 중 미들웨어에 대한 개념을 확실히 하고자 정리한 글입니다. 미들웨어란? 미들웨어(Middleware)는 이름 처럼 HTTP 요청과 응답의 처리 과정 중간에 위치하먀, 어플리케이션의 동작을 제어하고 변형하는 함수 또는 모듈을 의미합니다. 저는 미들웨어를 요청과 응답의 중간 단계라고 생각하고 공부하였습니다. // 미들웨어 함수 예 const myMiddleware = (req, res, next) => { console.log('This is a middleware.'); next(); // 다음 미들웨어 함수 호출 }; app.use(myMiddleware); // Express에서의 사용 예 미들웨어 함수는 세 개의 인자를 받습니다. req는 HTTP 요청 객체, res는 HTTP 응..
[Node.js] 시퀄라이저와 ORM, 프로젝트 템플릿
·
Framework/Node.js
Node.js 공부하면서 시퀄라이저에 대해 알게되어, 공부한 내용을 정리한 글입니다. 시퀄라이저란? 시퀄라이저(Sequelize)는 Node.js에서 사용되는 ORM(객체 관계 매핑) 라이브러리 중 하나입니다. 스프링을 아시는 분들은 ORM에 대해서 익숙하시겠지만, 지금까지 시퀄라이저 없이 Node.js 환경에서 api를 만들고 계셨더라면, ORM이라는 개념이 낯설 수 있습니다. ORM 이란? ORM은 Object-relational Mapping의 약자로 데이터베이스와 객체 지향 프로그래밍 언어 간의 상호 작용을 간소화하는 프로그래밍 기술로, 객체와 데이터베이스간의 패러다임 불일치를 해결하기 위해 도입되었습니다. 패러다임 불일치란 객체 지향 프로그래밍 언어에서 사용되는 데이터 모델과 관계형 데이터베이스..
[React][Axios] CORS에러 발생 이유와 proxy를 통한 해결
·
Framework/React
CORS란? CORS (Cross-Origin Resource Sharing) Policy(정책)는 웹 브라우저에서 실행되는 웹 애플리케이션들이 다른 도메인(origin)에 있는 리소스에 접근할 수 있는 권한을 부여하거나 제한하는 보안 정책입니다. 위 에러는 CORS 에러 입니다. 아마 다들 한 번 쯤은 봤을 에러인데요. 이 글에서는 왜 이러한 에러가 발생하는지, 그리고 어떻게 해결하는 지에 대해 아주아주 간략하게 정리해 보겠습니다. CORS에 대한 개념을 알아보기 위해 이 글을 보시는 것은 추천드리지 않습니다 🥲 다소 생략된 부분이 있다고 느끼실 수 있어요! CORS에러가 발생하는 이유 앞서 말했듯이 CORS는 다른 도메인에 있는 리소스에 접근하는 것과 관련이 있습니다. 여기서 다른 도메인(origin..
[Spring] Rest Template란?
·
Framework/SpringBoot
RestTemplate RestTemplate는 스프링 프레임워크가 제공하는 클래스로, RESTful 웹 서비스와 상호작용 하는 과정을 단순화하여 편리하게 API를 호출할 수 있습니다. RestTemplate의 동작 원리 어플리케이션이 RestTemplate를 생성합니다. (URI, HTTP 메서드 등 헤더를 담아서 요청함) RestTemplaterk HttpMessageConverter를 사용하여 requestEntity를 요청 메세지로 변환합니다. RestTemplate가 ClientHttpRequestFactory로 부터 ClientHttpRequest를 가져와서 요청을 보냅니다. ClientHttpRequest는 요청 메세지를 만들어 HTTP 프로토콜을 통해 서버와 통신합니다. RestTempla..
[Spring] Spring에서 깃허브 OAuth 로그인하기
·
Framework/SpringBoot
OAuth 앱 등록하기 깃허브에서 Setting > Developer Setting > OAuth Apps > Register a new application 으로 이동하여 OAuth 로그인을 할 앱을 등록해줍니다. 저는 현재 서버를 배포하지 않고 로컬에서 작업하고 있기 때문에 Hompage URL은 http://localhost:8080으로 해줬습니다. Authorization callback URL에는 로그인 후 돌아갈 즉 redirect url을 입력해주세요 토큰 생성하기 Register application을 누르고 바로 다음 화면에서 Generate a new client secret을 클릭하면 토큰이 발급됩니다. 발급받은 토큰은 Spring에서 사용되니 어딘가에 복사 해놓으세요 Spring 설..