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. 단일 조회
'B.E > Nest JS' 카테고리의 다른 글
Nestjs Swagger(1) - Swagger 설정 (0) | 2023.10.09 |
---|---|
[Nest JS] 파이프(Pipe) (0) | 2022.11.14 |
[Nest JS] 전화번호부 API 개발하기(2) - DTO, PIPE, Module (0) | 2022.08.24 |
[Nest JS] 구조에 대해서 알아보자. (0) | 2022.08.24 |
[Nest JS] Nest JS 시작하기. (0) | 2022.08.19 |