Гнездо JS реализовать express POST вызов с обратным вызовом - PullRequest
0 голосов
/ 05 марта 2020

Я пытаюсь внедрить Nest JS на существующем сервере, который обрабатывает голосовой разговор для Google Assistant. Я перехожу из настройки, в которой используются express для Nest JS с декораторами Controller и Post.

В предыдущей настройке я использовал express до , обрабатывал маршруты и это будет вызывать обратный вызов, который принимает входящие запросы и создает ответы чатбота. Эта установка выглядела так:

app.post("/google", this.googleController.callback);

Теперь я пытаюсь сделать то же самое с помощью Nest JS, но у меня возникают проблемы с реализацией той же структуры.

@Controller("google")
export class GoogleController {

  public callback: IGoogleEndpoint;

  /**
   * Constructor
   */
  constructor() {
    this.callback = dialogflow();
    // setup callback
  };

  @Post()
  public Post(@Req() req: Request) {
    return this.callback(req.body);
  };

В При предыдущей настройке express обратный вызов выполнял сопоставления для входящего запроса, обрабатывал его и создавал ответ для чат-бота. Все это делается в этом обратном вызове, поэтому я ищу решение, которое позволило бы мне направлять все входящие запросы непосредственно в обратный вызов.

Можно ли было бы создать что-то подобное в Nest * 1020? * * * 1013

1 Ответ

0 голосов
/ 06 марта 2020

Можно попробовать отправить req и res в метод callback библиотеки, но большая разница заключается в том, как контроллеры Nest и обработчики маршрутов Express управляют маршрутизацией. Nest по большей части контролирует настройку обычного (req, res, next) => {}) (например, традиционного обработчика маршрута), так что именно это в настоящее время передается на callback в приложении Express. Возможное решение может быть

@Controller("google")
export class GoogleController {

  public callback: IGoogleEndpoint;

  /**
   * Constructor
   */
  constructor() {
    this.callback = dialogflow();
    // setup callback
  };

  @Post()
  public Post(@Req() req: Request, @Res() res: Response) {
    return this.callback(req, res);
  };
}

Хотя вам все еще может понадобиться найти способ обеспечить обратный вызов, который имеет смысл, так что когда библиотека пытается использовать next() , он все еще преуспеет в своем вызове.

...