전체 글

전체 글

    [ASP.NET Core Web API] DI (Dependency Injection) 구현 (Autofac)

    시작하기 전 NuGet Package에서 Autofac과 Autofac.Extensions.DependencyInjection 패키지를 검색해 내려받고 설치합니다. 패키지 설치가 완료되면 우선 DI를 적용할 대상 인터페이스를 작성합니다. public interface IRepository { dbContext Data(); } 위 인터페이스는 dbContext를 반환하는 Data() 메서드를 선언하고 있으며 해당 인터페이스를 상속받아 인터페이스에서 정의한 메서드를 구현합니다. public class Repository : IRepository { public dbContext Data() { return new dbContext(); } } 작성된 클래스는 데이터베이스의 Entity 객체를 반환하는 클래..

    [ASP.NET Core Web API] JWT 인증

    [ASP.NET Core Web API] JWT 인증

    JWT(JSON Web Token)는 전통적인 폼 로그인 방식이 아닌 Token이라는 일련의 암호화된 문자열을 통해서 클라이언트와 서버 간의 인증을 처리하는 방식입니다. ASP.NET Core를 통해 Web API 구현할 때도 JWT를 통한 인증방식을 구현할 수 있습니다. 우선 Web API 프로젝트를 생성하고 startup.cs의 ConfigureServices 메서드에 아래와 같은 코드를 추가해 JWT 인증 스키마를 등록합니다. services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme).AddJwtBearer(options => { options.RequireHttpsMetadata = false; options.SaveToken = tru..

    [.NET Core] DB로 부터 Model 생성하기 (MySQL/MariaDB)

    [.NET Core] DB로 부터 Model 생성하기 (MySQL/MariaDB)

    Entity Framework을 통해 Model(Entity -> 이하 Model이라고 칭함)을 만들면 모델에 따라 DataBase에 Table을 생성할 수 있습니다. 그런데 키나 값의 제약조건 등 다양한 테이블의 속성을 정확하게 Model로 구현하기가 까다로울뿐더러 Table의 개수가 수십 개가 되면 그와 매핑되는 모델을 만들어 주기도 어려웠습니다. Core이전에는 'ADO.NET Entity Data Model'을 사용했지만 Core는 아직 같은 기능으로 사용할 수 있는 건 없는 듯합니다. 따라서 차라리 직접 Database에 Query나 전용 Tool을 사용해 Table을 생성한 다음 만들어진 Table을 대상으로 Model을 가져오는 편이 나을지도 모르며. 이 글에서는 이러한 방법을 안내하고자 합..

    [nestjs] TypeORM 기존 테이블에서 entity 생성하기

    TypeORM을 사용하려면 우선 만들고자 하는 테이블의 사양에 맞게 Entity를 생성해 줘야 합니다. 문제는 이게 TypeORM에 익숙하지 않으면 무척 피곤한 일이라는 건데 다행스럽게도 만들어진 테이블에서 entity를 생성하는 방법이 있습니다. 우선 필요한 테이블을 DB 전용의 툴을 사용해 만들거나 sql 구분으로 만든 다음에 역으로 TypeORM의 entity를 만들어 이걸 nestjs와 연결해 사용하면 될 듯합니다. 설치방법은 아래와 같습니다. npm i -g typeorm-model-generator 설치 후에는 다음의 명령어로 entity를 생성할 수 있습니다. typeorm-model-generator -h localhost -d school -p 3306 -u root -x 1234 -e ..

    [MariaDB] ubuntu 에서 MariaDB 완전 삭제

    apt-get purge mariadb-server apt-get purge mariadb-common

    [nestjs] spec과 unit testing

    [nestjs] spec과 unit testing

    nestjs구조를 보면 거의 모든 controller.ts와 service ts파일에 spec.ts파일이 같이 붙어 있는 것을 볼 수 있습니다. spec.ts파일은 테스트를 위한 파일입니다. import { Test, TestingModule } from '@nestjs/testing'; import { SchoolController } from './school.controller'; describe('SchoolController', () => { let controller: SchoolController; beforeEach(async () => { const module: TestingModule = await Test.createTestingModule({ controllers: [SchoolC..

    [nestjs] module과 의존성주입(dependency injection)

    [nestjs] module과 의존성주입(dependency injection)

    이 글은 아래 글에서 이어집니다. [Server/NestJS] - [nestjs] DTO (Data Transfer Object) [nestjs] DTO (Data Transfer Object) 아래 글은 아래 글에서 이어집니다. [Server/NestJS] - [nestjs] validation [nestjs] validation 아래 내용은 이전 포스팅에서 이어지는 내용입니다. [Server/NestJS] - [nestjs] Service [nestjs] Service nestj.. lab.cliel.com app.module.ts를 보면 다음과 같이 import { Module } from '@nestjs/common'; import { AppController } from './app.contro..

    [nestjs] DTO (Data Transfer Object)

    [nestjs] DTO (Data Transfer Object)

    아래 글은 아래 글에서 이어집니다. [Server/NestJS] - [nestjs] validation [nestjs] validation 아래 내용은 이전 포스팅에서 이어지는 내용입니다. [Server/NestJS] - [nestjs] Service [nestjs] Service nestjs에서 Service를 생성하려면 다음 명령을 사용합니다. nest g s Service 이름을 입력하고 다음으로.. lab.cliel.com nestjs에서는 다른 클래스의 타입을 사용해 또 다른 타입을 간단하게 생성할 수 있습니다. 예를 들어 특정 student의 정보를 변경하는 부분을 추가하기 위해 model디렉터리의 student.ts에서 업데이트를 위한 별도의 클래스를 아래와 같이 생성하였습니다. export..