| # Nestjs + fastapi |
|
|
| You can easily call this API from a NestJS microservice. |
|
|
| **.env** |
| ```env |
| FASTAPI_BASE_URL=http://localhost:8000 |
| SECRET_TOKEN=your_secret_token_here |
| ``` |
|
|
| **fastapi.service.ts** |
|
|
| ```typescript |
| import { Injectable } from "@nestjs/common"; |
| import { HttpService } from "@nestjs/axios"; |
| import { ConfigService } from "@nestjs/config"; |
| import { firstValueFrom } from "rxjs"; |
| |
| @Injectable() |
| export class FastAPIService { |
| constructor( |
| private http: HttpService, |
| private config: ConfigService, |
| ) {} |
| |
| async analyzeText(text: string) { |
| const url = `${this.config.get("FASTAPI_BASE_URL")}/text/analyse`; |
| const token = this.config.get("SECRET_TOKEN"); |
| |
| const response = await firstValueFrom( |
| this.http.post( |
| url, |
| { text }, |
| { |
| headers: { |
| Authorization: `Bearer ${token}`, |
| }, |
| }, |
| ), |
| ); |
| |
| return response.data; |
| } |
| } |
| ``` |
|
|
| **app.module.ts** |
| ```typescript |
| import { Module } from "@nestjs/common"; |
| import { ConfigModule } from "@nestjs/config"; |
| import { HttpModule } from "@nestjs/axios"; |
| import { AppController } from "./app.controller"; |
| import { FastAPIService } from "./fastapi.service"; |
| |
| @Module({ |
| imports: [ConfigModule.forRoot(), HttpModule], |
| controllers: [AppController], |
| providers: [FastAPIService], |
| }) |
| export class AppModule {} |
| ``` |
|
|
| **app.controller.ts** |
| ```typescript |
| import { Body, Controller, Post, Get } from '@nestjs/common'; |
| import { FastAPIService } from './fastapi.service'; |
| |
| @Controller() |
| export class AppController { |
| constructor(private readonly fastapiService: FastAPIService) {} |
| |
| @Post('analyze-text') |
| async callFastAPI(@Body('text') text: string) { |
| return this.fastapiService.analyzeText(text); |
| } |
| |
| @Get() |
| getHello(): string { |
| return 'NestJS is connected to FastAPI'; |
| } |
| } |
| ``` |
| [🔙 Back to Main README](../README.md) |
|
|