기본 미들웨어만 추가
yarn add @fastify/cookie @fastify/session @fastify/multipart @fastify/cors @nestjs/platform-fastify
yarn add class-validator class-transformer
- fastify를 사용할 것이므로 관련 패키지 추가
- class 검증을 위한 class-validator, class-transformer 추가
.env에 SESSION_SECRET추가
#APP PORT
PORT=4000
#SECRET KEY
SESSION_SECRET=
#DATASBASE CONFIG
DATABASE_HOST=127.0.0.1
DATABASE_PORT=3306
DATABASE_USERNAME=
DATABASE_PASSWORD=
DATABASE_NAME=
SESSION_SECRET는 openssl hex 32자리 난수 생성하여 사용
openssl rand -hex 32
a88ecaf80054bbcbfeae302916a47e1e95428a8b4a09c3918e26351f80d18db4
app.middleware.ts추가하여 넣기
import { middleware } from "./app.middleware";
const app = await NestFactory.create<NestFastifyApplication>(AppModule, new FastifyAdapter());
middleware(app);
나머지들은 소스 참고 하면 되는데, multipart는 설명이 필요함.
fastify/multipart 7.xx 에서는 addToBody 옵션이 있었는데, 8.2.0에서 확인 결과, 해당 옵션 Depreacted 된 것을 확인.
추가로 방법을 찾아본 결과 attachFieldsToBody: "keyValues", 설정하고, onFile에서 사용할 value를 설정하면 됨.
이렇게 하면 addToBody와 비슷한결과를 만들 수 있음.
app.register(multipart, {
attachFieldsToBody: "keyValues",
onFile: async (part: any) => {
//part.value에 값을 넣으면 됨
//filename이 필요없고 바로 buffer를 사용하려면
// part.value = await part.toBuffer()
part.value = { filename: part.filename, mimetype: part.mimetype, encoding: part.encoding, value: await part.toBuffer() };
// set `part.value` to specify the request body value
},
...
})
- 위 설명처럼 buffer를 바로 받고싶으면 buffer를 value에 넣으면 되고
- 파일명 등 속성값을 받아서 처리하려고 한다면, 정의해서 value에 넣어주면 됨.
- limits는 환경이나 프로젝트에 따라 설정하면 됨.
* 다른 방법으로는 nest-file-fastify를 사용하는 방법도 있습니다.
@fastify/multipart : https://github.com/Blazity/nest-file-fastify
+ 추가 fastify는 await app.listen(PORT, "0.0.0.0"); 0.0.0.0 을 설정해줘야 외부접근이 가능함.
현재까지 코드 보기: https://github.com/close852/nestjs-toy/tree/04
'Nodejs > NestJS' 카테고리의 다른 글
[NestJS] 파일 업로드 처리 로컬 & AWS S3 06 (0) | 2024.05.27 |
---|---|
[NestJS] fastify @UploadedFile, @UploadedFiles 커스텀 만들기 05 (0) | 2024.05.27 |
[NestJS] TypeORM(MySQL) 설정 Migration 포함 03 (0) | 2024.05.26 |
[NestJS] config 불러오기 설정 추가 02 (0) | 2024.05.26 |
[NestJS] 프로젝트 설정 01 (0) | 2024.05.26 |