跳至主要內容

网络请求

刘春龙原创...小于 1 分钟NodejsNestjs教程文档

Axios 是功能丰富的 HTTP 客户端包,被广泛使用。 Nest 封装了 Axios 并通过内置的 HttpModule 将其公开。 HttpModule 导出 HttpService 类,它公开了基于 Axios 的方法来执行 HTTP 请求。 该库还将生成的 HTTP 响应转换为 Observables

要开始使用它,我们首先安装所需的依赖。

npm i --save @nestjs/axios axios

安装过程完成后,要使用 HttpService,请先导入 HttpModule。

import { Module } from '@nestjs/common';
import { UserService } from './user.service';
import { UserController } from './user.controller';
import { HttpModule } from '@nestjs/axios';

@Module({
  imports: [
    HttpModule.registerAsync({
      useFactory: () => ({
        timeout: 5000,
        maxRedirects: 5,
      }),
    })
  ],
  controllers: [UserController],
  providers: [UserService]
})
export class UserModule { }



 



 
 
 
 
 






使用

import { Controller, Get } from '@nestjs/common';
import { UserService } from './user.service';
import { HttpService } from '@nestjs/axios';
import { firstValueFrom } from 'rxjs';
@Controller('user')
export class UserController {
  constructor(
    private readonly userService: UserService,
    private readonly httpService: HttpService
  ) { }
  @Get()
  async findOne() {
    const { data } = await firstValueFrom(
      this.httpService.get('http://localhost:3000/user/v11').pipe(),
    );
    return data;
  }
  @Get("v1")
  findOneV1() {
    return { message: 'Hello world!' };
  }
}

此时,我们访问http://localhost:3000/user,拿到了message: 'Hello world!'的json对象

提示

由于 HttpService 方法的返回值是一个 Observable,我们可以使用 rxjs - firstValueFromlastValueFrompromise 的形式检索请求的数据。

上次编辑于:
贡献者: 刘春龙
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.15.7