NestJS를 사용한 모험: API 구축. 1 부
최종 앱은 아마도 시간이 지남에 따라 발전하겠지만 포함할 몇 가지 사항은 다음과 같습니다.
이 앱은 중고 서점을 위한 하나의 관리 시스템이자 온라인 상점이 될 것입니다. 제가 한 곳에서 일하고 이와 같은 것이 있으면 일상 업무가 훨씬 쉬워질 것이기 때문입니다. 내가 사용할 주요 기술은 다음과 같습니다.
그 과정에서 Admin Frontend도 구축할 것입니다.
이 문서에서는 프로젝트를 설정하여 시작합니다.
먼저 새로운 Nest 앱을 생성해 보겠습니다.
nest new {app_name}
Nest CLI가 설치되어 있지 않은 경우 다음을 사용하여 설치할 수 있습니다.
npm i -g @nestjs/cli
상용구 코드를 작성하는 데 소요되는 시간을 줄이기 위해 생성기가 많기 때문에 중첩 응용 프로그램을 시작하는 가장 쉬운 방법입니다. Nest CLI는 어떤 패키지 관리자를 사용할지 묻습니다. 저는
yarn
를 선택하겠습니다.이제 사용할 첫 번째 패키지를 추가해 보겠습니다.
yarn add @nestjs/config @nestjs/graphql @nestjs/apollo @nestjs/typeorm apollo-server-express graphql typeorm pg
GraphQl 및 TypeORM을 설정하려면
app.module.ts
파일에 다음을 추가해야 합니다.@Module({
imports: [
ConfigModule.forRoot({
isGlobal: true,
}),
TypeOrmModule.forRootAsync({
inject: [ConfigService],
useFactory: (configService: ConfigService) => ({
url: configService.get('POSTGRES_URL'),
// here we will need to add every entity we create
entities: [],
type: 'postgres',
synchronize: true,
}),
}),
GraphQLModule.forRootAsync<ApolloDriverConfig>({
driver: ApolloDriver,
inject: [ConfigService],
useFactory: (configService: ConfigService) => ({
playground: true,
debug: true,
autoSchemaFile: path.join(process.cwd(), 'src/graphql/schema.gql'),
}),
}),
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
우리가 가져오는 첫 번째 모듈은
.env
파일에서 정보를 가져올 수 있는 ConfigModule이며, 다른 모듈에서 가져올 필요가 없도록 전역으로 만듭니다. 그런 다음 postgresql을 사용할 수 있도록 TypeOrmModule을 설정합니다. syncronize: true
는 TypeOrm이 우리가 정의한 엔티티로 DB 스키마를 최신 상태로 유지하려고 시도함을 의미합니다. 이는 마이그레이션을 사용해야 하는 프로덕션에서는 권장되지 않습니다.GraphQL의 경우 Code First 접근 방식을 사용할 것이므로 모듈 구성에
autoSchemaFile
옵션이 있습니다. 이렇게 하면 Nest가 GraphQL 데코레이터로 장식된 클래스 및 해당 속성에 대한 코드를 스캔하고 자동으로 스키마를 생성합니다.앱을 시작하기 전에 Postgres Db를 설정해야 합니다. 이를 위해 Docker Compose를 사용하고 프로젝트 루트 디렉토리에
docker-compose.yml
파일을 생성하겠습니다. 그리고 내부에 다음을 추가하십시오.version: '3'
services:
postgres:
image: postgres:14
container_name: postgres_db
restart: unless-stopped
volumes:
- ./postgres:/var/lib/postgresql/data
ports:
- "5432:5432"
environment:
POSTGRES_DB: postgres
POSTGRES_PASSWORD: postgres
docker Compose 사용법을 알고 있다면 개발용 데이터베이스를 설정하는 가장 쉬운 방법 중 하나입니다. 그렇지 않은 경우 항상 컴퓨터에 Postgres를 설치할 수 있습니다.
다음을 실행하는 첫 번째 리졸버를 만들어 보겠습니다.
nest g resolver app --flat
내부에 다음을 추가하십시오.
import { Resolver, Query } from '@nestjs/graphql';
@Resolver()
export class AppResolver {
@Query(() => String)
hello() {
return 'hello world';
}
}
이 모든 작업이 완료되면
yarn start:dev
를 실행하고 localhost:3000/graphql
로 이동하여 graphql 플레이그라운드에서 hello 쿼리를 실행할 수 있습니다.이 저장소에서 코드를 찾아볼 수 있습니다. nest-adventures
지금은 여기까지입니다. 다음 게시물에서는 제품 및 관련 기능을 추가할 것입니다.
읽어 주셔서 감사합니다. 이것은 내가 작성한 첫 번째 게시물이므로 개선 방법에 대한 의견이나 마음에 들면 매우 감사하겠습니다.
Reference
이 문제에 관하여(NestJS를 사용한 모험: API 구축. 1 부), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/franciscomessina/adventures-with-nestjs-building-an-api-part-1-2g03텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)