2023/04 25

Supabase란?

정말 쉽고 간단하게 백앤드 서버를 구축할 수 있고, 비용도 firebase만큼 저렴하여 정말 강추드리는 서비스입니다. 물론 백앤드를 공부해야된다면 지양하겠지만, 간단하고 적은 비용, 노력으로 애플리케이션, 또는 웹을 만들고싶다면 이만한게 없다고 생각합니다. 기존에 firebase는 nosql이라 여러모로 불편한점이 많았다면, supabase는 pgsql을 기반으로 하여 데이터베이스를 쿼리할 수 있기때문에 관계형 데이터베이스의 특징을 모두 가지고있습니다. 🧡 supabase란? Supabase를 사용하면 데이터베이스와 API를 구축하는 데 필요한 복잡한 설정과 관리를 최소화할 수 있습니다. Supabase는 PostgreSQL을 기반으로 하며, SQL 쿼리 및 다양한 데이터베이스 작업을 수행할 수 있습니다..

angular 2023.04.10

NestJs 프로젝트에서 Swagger 사용하기

https://swagger.io/ API Documentation & Design Tools for Teams | Swagger Loved by all • Big & Small Thousands of teams worldwide trust Swagger to deliver better products, faster. swagger.io 프로젝트가 커질수록, 팀 프로젝트를 할수록 문서화하는것은 매우 중요하다. REST API 수가 많아질수록, 팀원들과 소통하기 위해 문서화 작업은 필수입니다. 문서화 작업을 위한 swagger 우리함께 배워봅시다. 😊 🤷 Swagger란? API 설계와 문서화를 위한 오픈 소스 도구입니다. 이를 사용하면 개발자들이 API를 보다 쉽게 이해하고 사용할 수 있도록 문서를 작성..

nest js 2023.04.07

JWT(JSON Web Token) 토큰이란??

🔒 인증(Authentication) VS 인가(Authorization) 인증 인증은 사용자가 자신이 주장하는 신원이 실제로 맞는지 확인하는 과정입니다. 이를 위해 사용자 이름과 비밀번호를 사용하여 로그인 폼에 인증 정보를 입력하는 것이 일반적입니다. 인증 방식에는 사용자 이름과 비밀번호, 바이오메트릭 인증(지문, 안면, 홍채 등), OAuth, SSO(Single Sign-On) 등이 있습니다. 인가 인가는 인증된 사용자가 요청한 자원에 대해 어떤 권한이 있는지 확인하는 과정입니다 예시) 인증: 관리자 페이지에 접근하려면, 관리자 계정으로 로그인해야 합니다. 이때, 관리자는 사용자 이름과 비밀번호를 입력하여 자신이 맞는지를 인증합니다. 인가: 관리자는 관리자 페이지에서 사용자 계정을 추가, 수정, 삭..

기타 2023.04.07

쿠키 vs 세션(cookie vs session)

공통점은 무엇일까? 쿠키와 세션은 모두 http 프로토콜에서 클라이언트와 서버가 상태를 유지하기 위해 사용되는 것입니다. 쿠키와 세션에 대해 알아보자 1. 쿠키 🍪 쿠키는 클라이언트 측에 저장되며, 웹서버에서 생성하여 http 응답 헤더를 통해 전송됩니다. 클라이언트는 이를 로컬에 저장하고, 이후 요청 시 에는 쿠키를 http 요청 헤더에 포함시켜 서버에 전송합니다. 서브는 해당 쿠키의 값을 참조하여 클라이언트의 상태를 파악합니다. 💛 쿠키의 특징 클라이언트 측에 저장: 쿠키는 클라이언트 측(브라우저)에 저장되어 서버에서 사용자를 구별하거나 정보를 저장하게 됩니다. 서버에서 생성 및 전송: 쿠키는 서버에서 생성되어 HTTP 응답 헤더에 포함되어 클라이언트로 전송됩니다. 유효 기간 설정 가능: 쿠키는 만료..

기타 2023.04.07

NestJs Guard에 대해 알아보자

Guard란? guard는 요청의 처리 여부를 결정하는 미들웨어 역할을 합니다. guard는 인증과 권한 부여 등 요청에 대한 검사를 처리하는 데 주로 사용합니다. guard는 @nestjs/common의 CanActivate 인터페이스를 확장하는 클래스로 구현됩니다. 이 인터페이스는 canActivate라는 단일 메서드를 정의하며, 이 메서드는 ExecutionContext 객체를 인수로 취하고 요청이 진행되어야 하는지 여부를 나타내는 부울 값을 반환합니다. 예를 들어, 아래 코드에서는 JWT 토큰을 가져와 인증 여부를 판단하고, 인증되지 않은 요청은 거부합니다. @Injectable() export class AuthGuard implements CanActivate { constructor( pri..

nest js 2023.04.07

NestJs Custom decorator에 대해 알아보자

nestjs에서 데코레이터는 애플리케이션의 모듈, 컨트롤러, 서비스 등의 클래스와 메서드에 붙일 수 있는 기능적인 어노테이션입니다. 앞서 배운 @body @param~ 등이 데코레이터입니다. 데코레이터는 클래스와 메서드에 메타데이터를 추가하거나 애플리케이션을 자동으로 구성하기 위해 사용될 수 있습니다. 커스텀 데코레이터란? 커스텀 데코레이터는 직접 만든 데코레이터로 nestjs에서 제공하는 데코레이터 외에도 자신이 원하는 기능을 구현하기 위해 만들어진것입니다. import { createParamDecorator, ExecutionContext } from '@nestjs/common'; export const User = createParamDecorator( (data: unknown, ctx: Ex..

nest js 2023.04.07

NestJs custom pipe 에 대해 알아보자

사용자 정의 Pipe 사용자 정의 파이프는 다양한 용도로 사용될 수 있습니다. 예를들어, 입력 데이터의 유효성검사, 데이터 변환, 비즈니스 로직 처리 등이 가능합니다. 이에 따라 파이프 로직도 다양하게 작성될수도 있습니다. 사용자 정의 파이프를 만드려면 PipeTransform 인터페이스를 구현하는 클래스를 작성해야합니다. PipeTransform 인터페이스는 transform() 메소드를 정의합니다. 이 메소드는 파이프가 변환하거나 검증할 값을 입력으로 받고 변환된 값을 반환합니다. 아래는 예시코드입니다. 직접구현하여도 되지만 cli를 통해 간단하게 파이프를 생성합니다. nest g pi my import { ArgumentMetadata, Injectable, PipeTransform } from '..

nest js 2023.04.06

NestJs Pipe에 대하여 알아보자

파이프란? 파이프의 경우에 두가지 사용 사례가 있습니다. 변환 : 입력 데이터를 원하는 형식으로 변환(예: 문자열에서 정수로) validation : 입력 데이터를 평가하고 유효한 경우 변경되지 않은 상태로 전달합니다. 그렇지 않으면 예외를 throw합니다. 빌드인 파이프와 바인딩 파이프 빌트인 파이프는 NestJS 프레임워크에서 제공하는 파이프입니다. 예를 들어 ValidationPipe ParseIntPipe ParseFloatPipe ParseBoolPipe ParseArrayPipe ParseUUIDPipe ParseEnumPipe DefaultValuePipe ParseFilePipe 바인딩 파이프는 라우트 핸들러에 파이프를 바인딩하는 것을 의미합니다. 예를 들어 다음과 같이 작성할 수 있습니다..

nest js 2023.04.06

NestJs 미들웨어

미들웨어란? 미들웨어는 http요청과 응답사이 즉 라우터 핸들러 이전에 호출되는 함수 입니다. 다시말해서 클라이언트 요청을 라우터 핸들러가 받기전에 가로채서 다른작업을 수행할 수 있습니다. 다음과 같은 특징들이 있습니다. 요청에 대한 검증, 로깅, 인증, 권한 체크, 캐싱 등의 작업을 수행 할 수 있습니다. 다수의 미들웨어 등록을 통해 다양한 작업을 순차적으로 처리할 수 있습니다. next 함수 호출을 통해 미들웨어 체인을 연결합니다. next 함수를 호출하면 다음 미들웨어가 실행되며, 호출하지 않으면 다음 미들웨어가 실행되지 않습니다. NestJS는 전역 미들웨어(Global Middleware)와 로컬 미들웨어(Local Middleware)를 지원합니다. 전역 미들웨어는 모든 요청과 응답에 적용되며..

nest js 2023.04.06

NestJs Provider(공급자)

공급자란? nestjs 공급자란 애플리케이션에서 사용되는 객체를 생성하고 제공하는 역할을 합니다. 대부분의 공급자는 클래스로 작성되며 @Injectable() 데코레이터를 사용하여 해당 클래스를 공급자로 등록합니다. 공급자는 모듈내에서 생성되고 제공됩니다 @Module() 데코레이터의 providers 배열에 공급자를 등록하여 모듈 내에서 사용할 수 있습니다. 또한, @Injectable() 데코레이터를 사용하여 공급자 클래스에 의존성 주입(Dependency Injection) 기능을 적용할 수 있습니다. userService라는 공급자를 만들고 userModule에 등록한다고 가정해봅시다. 예시코드입니다. 1. 클래스(class) 기반 공급자 service class로 예시를 적용해보았습니다. imp..

nest js 2023.04.06