-
[고농축 백엔드 코스Quiz12 | 응용]Nest.js 프로젝트 생성 / 메뉴 생성-조회 API 만들기 (GraphQL 사용 안함 & DB 비연동)카테고리 없음 2023. 8. 4. 11:08
폴더구조

app.module.ts
더보기import { Module } from '@nestjs/common'; import { SbController } from './apis/starbucks/sb.controller'; import { SbService } from './apis/starbucks/sb.service'; @Module({ imports: [], controllers: [SbController], providers: [SbController, SbService], }) export class AppModule {}sb.module.ts
더보기import { Module } from '@nestjs/common'; import { SbController } from './sb.controller'; import { SbService } from './sb.service'; @Module({ imports: [], controllers: [SbController], providers: [SbController, SbService], }) export class SbModule {}sb.controller.ts
더보기import { Body, Controller, Get, Post } from '@nestjs/common'; import { SbService } from './sb.service'; import { Args, Resolver } from '@nestjs/graphql'; import { Starbucks } from './entities/starbucks.entity'; import { CreateMenuInput } from './dto/createMenuDto'; @Resolver() @Controller() export class SbController { constructor( private readonly sbService: SbService, ) {} @Get('/fetchSb') fetchRealStarbucks(): Starbucks[] { return this.sbService.findSb(); } @Post('/createMenu') cm(@Body() createMenuInput: CreateMenuInput) { return this.sbService.create({ createMenuInput }); } }sb.service.ts
더보기import { Injectable } from '@nestjs/common'; import { Starbucks } from './entities/starbucks.entity'; import { IMenuCreate } from './interfaces/sb.service.interface'; @Injectable() export class SbService { findSb(): Starbucks[] { const result = [ { number: 1, name: '라떼라떼', kcal: 100, fat: 10, protein: 1, sodium: 1, sugars: 1, caffeine: 1, }, { number: 1, name: '녹차프라푸치노', kcal: 490, fat: 10, protein: 10, sodium: 10, sugars: 10, caffeine: 10, }, ]; return result; } create({ createMenuInput }: IMenuCreate): string { console.log(createMenuInput, '을 받아오는데 성공! '); return createMenuInput.name; } }interfaces/sb.service.interface.ts
더보기import { CreateMenuInput } from '../dto/createMenuDto'; export interface IMenuCreate { createMenuInput: CreateMenuInput; }dto/createMenuDto.ts
더보기export class CreateMenuInput { number: number; name: string; kcal: number; fat: number; protein: number; sodium: number; sugars: number; caffeine: number; }main.ts
더보기import { NestFactory } from '@nestjs/core'; import { AppModule } from './app.module'; async function bootstrap() { const app = await NestFactory.create(AppModule); await app.listen(3000); } bootstrap();하면서 궁금했던 것
DTO vs Interface vs Entity
개념 설명 DTO Data Transfer Object 로 데이터를 전송할 때 담는 객체다. 이는 하나의 클래스로 생성된다.
앞단과 데이터를 주고받을 때 사용되기 때문에 Controller단에서 사용되고 View/Serivce랑 데이터를 주고받을 때 사용된다.Interface 타입스크립트에서 타입정의를 위해 생성되는 객체타입이다.
DTO를 import 해서 interface로 사용하기도 한다.
<DTO>
export class CreateUserInput{내용}
<Interface>
interface IUserCreateInput{
createUserInput: CreateUserInput
}
<Serivce>
create({createUserInput} : IUserCreateInput): string{내용}Entity DB와 연동될 테이블의 정의하는 영역이다 그리고 eslint와 prettier가 충돌나서 애를 먹었다. 없애버리고 싶었따..

사실 지금도 parsing 에러가 나고 있긴하지만, 실제 구동하는데에는 문제가 없어서 무시하고 사용하고 있다..
반응형