как обслуживать ресурсы из Nest.js и добавлять промежуточное ПО для обнаружения запроса изображения - PullRequest
0 голосов
/ 26 июня 2018

Я пытаюсь передать изображение с сервера Nest.js и добавить промежуточное ПО для отслеживания всех запросов, но единственный способ заставить его работать - это экспресс

import { NestFactory } from '@nestjs/core';
import * as bodyParser from "body-parser";
import {AppModule} from "./app.module";
import * as path from "path";
import * as express from 'express';


async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  app.use(bodyParser.json({limit: '50mb'}));

  app.use(function(req, res, next){
    next();
  });
  //
  app.use('/api/track/',express.static(path.join(__dirname, '/public'))); //Serves resources from public folder
  app.use('/api/track/:img', function (req, res, next) {
    console.log('do something');
    next();
  });

  await app.listen(3333);
}

bootstrap();

Как я могу реализовать это с помощью контроллера или промежуточного программного обеспечения?

1 Ответ

0 голосов
/ 05 июля 2018

Документ nestjs расскажет вам, как обслуживать статические файлы. Вкратце, вот как вы это делаете:

Укажите корневой каталог ваших активов в вашем main.ts

app.useStaticAssets(path.join(__dirname, '/../public'));

Используйте аннотацию @Res, чтобы можно было использовать метод sendFile для экспресс-фреймворка

@Get('track/:imgId')
test(@Param('imgId') imgId, @Res() res) {
  const imgPath = getImgPath(imgId);
  return res.sendFile(imgPath, { root: 'public' });
}

В этом решении предполагается, что в вашей установке nestjs используется Express под капотом.


Источники:

...