๐ [ ์ํฉ ]
nestjs ๋ฅผ ์ฌ์ฉํด์ API ์๋ฒ๋ฅผ ๊ฐ๋ฐํ๋ ์ค
์ด๋ฏธ์ง ํ์ผ๋ค์ ์ ์ ์ผ๋ก ์ ๊ณตํด์ฃผ๋ ๊ธฐ๋ฅ์์ ์ฝ์ง์ด ์์๋๋ค.
์ด๋ฏธ์ง ํ์ผ ๋ค์ด๋ก๋๊ฐ ์๋๋ผ ๋ธ๋ผ์ฐ์ ์์์ ์ด๋ฏธ์ง๋ฅผ ๋์ฐ๋ ๊ธฐ๋ฅ์ด๋ค.
1. ํ๋ก์ ํธ ํด๋ ๊ตฌ์กฐ
files/images ํ์์ ํ์ผ์ ์ ๊ณตํ๋ ค๊ณ ํ๋ค.
2. ๊ณต์๋ฌธ์ ๋ฐฉ๋ฒ
nest ๊ณต์๋ฌธ์์์ ์๋ดํ๋ ์ ์ ํ์ผ ์ ๊ณต ๋ฐฉ๋ฒ์ด๋ค.
@nestjs/serve-static ๋ผ์ด๋ธ๋ฌ๋ฅผ ์ค์นํ๊ณ , ServeStaticModule ์ค์ ์ ํตํด ์ ์ ํ์ผ์ ์ ๊ณตํ ์ ์๋ค๊ณ ํ๋ค.
npm install --save @nestjs/serve-static
import { join } from 'path';
import { Module } from '@nestjs/common';
import { ServeStaticModule } from '@nestjs/serve-static';
import { AppController } from './app.controller';
import { AppService } from './app.service';
@Module({
imports: [
ServeStaticModule.forRoot({
rootPath: join(__dirname, '..', 'client'),
}),
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
๐ก [ ๋ฌธ์ ]
๊ณต์๋ฌธ์์ ๋์ผํ ๋ฐฉ๋ฒ์ผ๋ก ServerStaticModule ์ค์ ํ์ง๋ง ์ ๋๋ค!! ๐
@Module({
imports: [
ServeStaticModule.forRoot({
rootPath: path.join(__dirname, '../..', 'files'),
}),
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
`rootPath`๋ก ์ค์ ํ URL(C:\Users\superpower\dev\nest-001\files)๋ ์ ํํ๊ฒ ๊ฐ๋ฅดํค๊ณ ์๋ค.
URI๋ก ๊ฐ๋ฅดํค๋ zz2.png ํ์ผ์ด ์๋๋ผ index.html ํ์ผ๋ก ์ฐพ์๊ฐ๋ค.
[Nest] 14668 - 2022. 01. 16. ์คํ 3:15:37 ERROR [ExceptionsHandler] ENOENT: no such file
or directory, stat 'C:\Users\superpower\dev\nest-001\files\index.html'
Error: ENOENT: no such file or directory, stat 'C:\Users\superpower\dev\nest-001\files\index.html'
GET /api/images/zz2.png 404 2.071 ms - 125
๐งช [ ์์ธ ]
- @nestjs/serve-static ํจํค์ง ๊ณต์๋ฌธ์๋ฅผ ๋ชจ๋ ํ์ธํ๊ณ ์ค์ ๊ฐ์ ์ด๋ ๊ฒ ์ ๋ ๊ฒ ์ ์ฉํด๋ ์๋๋ค.
- ๊ตฌ๊ธ๋ง์๋ @nestjs/serve-static <- ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ํด๊ฒฐ๋ ์ด์๊ฐ ์๋ค.
- ํด๋น ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ SPA ํ๋ก์ ํธ์ ๋น๋ ํ์ผ๋ง ์ ๊ณตํ ์ ์๋ ๋ณด๋ค.(์ฐธ๊ณ )
In order to serve static content like a Single Page Application (SPA) we can use the ServeStaticModule from the @nestjs/serve-static package.
๐ [ ํด๊ฒฐ ]
Nest, by default, makes use of the Express library under the hood. Hence, every technique for using the MVC (Model-View-Controller) pattern in Express applies to Nest as well.
Model-View-Controller ํจํด์ View ๊ธฐ๋ฅ์ ์ด์ฉํด์ ์ฌ์ฉ์์๊ฒ ์ด๋ฏธ์ง๋ฅผ ๋ณด์ฌ์ฃผ์.(์ฐธ๊ณ )
ํ๋ก์ ํธ์ ๋ฃจํธํ์ผ์์ ๋ค์๊ณผ ๊ฐ์ด useStaticAssets ๋ฉ์๋๋ฅผ ์ด์ฉํด์ ์ค์ ํ๋ฉด ๋๋ค.
ํด๋น ๊ธฐ๋ฅ์ @nestjs/platform-express ์ ๋ด์ฅ๋์ด ์์ด ๋ณ๋์ ์ค์น๋ ํ์์๋ค.
const app = await NestFactory.create<NestExpressApplication>(AppModule);
app.useStaticAssets(path.join(__dirname, '../..', 'files'), {
prefix: `/${GLOBAL_PREFIX}/`,
});
prefix ์ต์ ์ ๋ธ๋ผ์ฐ์ ์์ ์ ๋ ฅํ๋ URL์ prefix ์ค์ ์ ์๋ฏธํ๋ค.
app.setGlobalPrefix(GLOBAL_PREFIX); ๋ฅผ ํด์คฌ์ง๋ง ๋ณ๋๋ก ์ค์ ํด์ผ ์ ์ฉ์ด ๋๋ค.
๐ค๐ค๐ค๐ค๐ค ์ ๋์จ๋ค. ๐ค๐ค๐ค๐ค
'Develop > Node' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
node-gyp rebuild fails during npm install canvas (0) | 2022.10.23 |
---|---|
express.urlencoded ๊ฐ ๋ญ์ง? (0) | 2022.01.16 |
๋๊ธ