Tech Blog of Pinomaker

Nest JS를 이용해서 전화번호 API를 개발하자.

전화번호부를 생성하거나, 목록 조회, 단일 조회를 할 수 있고, 수정, 삭제, 이미지, JWT까지 시간이 되면 작성할 예정이다.

 

Entity 생성

먼저 Entity를 생성하자.

Entity는 하나의 객체라고 생각하면 되고, 해당 프로젝트에선 전화번호라고 생각하자.

 

[phonebook.entity.ts]

export class Phonebook {
  idx: number
  name: string
  phone: string
}

 

Service 생성

아래의 명령어로 쉽게 Service를 생성할 수 있다.

nest g s

 

목록 조회, 단일 조회, 생성 즉 비즈니스 로직을 처리할 Service를 생성하자.

아직 DB 연결을 하지 않기에, 가상 저장소인 배열을 만들어서 개발한다.

기능 함수 이름 내용
목록 조회 getAllList 모든 전화번호부 목록을 반환한다.
단일 조회 getOne idx를 받아 해당 idx의 전화번호 하나를 반환한다.
전화번호 생성 save name, phone을 받아서 임시 저장소에 저장한다.

 

[phonebook.service.ts]

import { Injectable } from '@nestjs/common'
import { Phonebook } from './phonebook.entity'

@Injectable()
export class PhonebookService {
  // 임시 저장소
  private phonebookList: Phonebook[] = []
  
  // 목록 조회
  async getAllList(): Promise<Phonebook[]> {
    return this.phonebookList
  }

  // 단일 조회
  async getOne(idx: number): Promise<Phonebook> {
    return this.phonebookList.find((item) => item.idx === idx)
  }

  // 전화번호 생성
  async save(name: string, phone: string) {
    this.phonebookList.push({
      idx: this.phonebookList.length + 1,
      name: name,
      phone: phone,
    })
  }
}

 

Controleller 생성

 

아래의 명령어로 쉽게 Controller를 생성 할 수 있다.

nest g co

 

목록 조회, 단일 조회, 생성을 위한 콘트롤러를 추가한다.

 

@Param을 이용해 URL 파라미터 처리를 할 수 있으며, @Body를 이용해 요청 Body 메세지를 추출할 수 있다.

 

[phonebook.controller.ts]

import { Body, Controller, Get, Param, Post } from '@nestjs/common'
import { PhonebookService } from './phonebook.service'

@Controller('phonebook')
export class PhonebookController {
  // 생성자를 사용해, phoneService 생성
  constructor(private readonly phonebookService: PhonebookService) {}
  
  @Get()
  async getAllList() {
    return this.phonebookService.getAllList()
  }

  @Get('/:id')
  async getOne(@Param('id') idx: string) {
    return this.phonebookService.getOne(parseInt(idx))
  }

  @Post()
  async save(@Body() name: string, phone: string) {
    return this.phonebookService.save(name, phone)
  }
}

 

POSTMAN TEST

1. 전화번호 생성

2. 목록 조회

 

3. 단일 조회

 

profile

Tech Blog of Pinomaker

@pinomaker

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!