无法使用 nest.js HttpService 发出成功的请求
Unable to make successful requests using nest.js HttpService
我正在尝试使用他们的文档中指定的 nest.js HttpService 发出请求,但我一直收到无法理解的错误。
我已经导入了 HttpModule
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
@Module({
imports: [HttpModule],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
我正在尝试像这样使用 HttpService:
import { HttpService } from '@nestjs/axios';
import { Controller, Get } from '@nestjs/common';
import { lastValueFrom } from 'rxjs';
import { AppService } from './app.service';
@Controller()
export class AppController {
constructor(
private readonly appService: AppService,
private httpService: HttpService
) {}
@Get()
async getHello(): Promise<string> {
const req = this.httpService.get('https://icanhazdadjoke.com/');
console.log(req)
const res = await lastValueFrom(req);
const data = res.data
return data
}
}
但是当我使用 curl 查询 get 端点时,我收到错误响应
http-test git:(master) ✗ curl localhost:3001
{"statusCode":500,"message":"Internal server error"}%
我的控制台显示以下内容
[11:02:02 a.m.] File change detected. Starting incremental compilation...
[11:02:02 a.m.] Found 0 errors. Watching for file changes.
[Nest] 73798 - 2022-03-22, 11:02:03 a.m. LOG [NestFactory] Starting Nest application...
[Nest] 73798 - 2022-03-22, 11:02:03 a.m. LOG [InstanceLoader] HttpModule dependencies initialized +36ms
[Nest] 73798 - 2022-03-22, 11:02:03 a.m. LOG [InstanceLoader] AppModule dependencies initialized +1ms
[Nest] 73798 - 2022-03-22, 11:02:03 a.m. LOG [RoutesResolver] AppController {/}: +5ms
[Nest] 73798 - 2022-03-22, 11:02:03 a.m. LOG [RouterExplorer] Mapped {/, GET} route +2ms
[Nest] 73798 - 2022-03-22, 11:02:03 a.m. LOG [NestApplication] Nest application successfully started +2ms
Observable { _subscribe: [Function (anonymous)] }
[Nest] 73798 - 2022-03-22, 11:02:06 a.m. ERROR [ExceptionsHandler] Request failed with status code 503
Error: Request failed with status code 503
at createError (/Users/sv/projects/http-test/node_modules/@nestjs/axios/node_modules/axios/lib/core/createError.js:16:15)
at settle (/Users/sv/projects/http-test/node_modules/@nestjs/axios/node_modules/axios/lib/core/settle.js:17:12)
at IncomingMessage.handleStreamEnd (/Users/sv/projects/http-test/node_modules/@nestjs/axios/node_modules/axios/lib/adapters/http.js:322:11)
at IncomingMessage.emit (events.js:412:35)
at endReadableNT (internal/streams/readable.js:1317:12)
at processTicksAndRejections (internal/process/task_queues.js:82:21)
A 503 是服务不可用。我可以使用 curl
和 xh
拨打电话,而且效果很好。检查他们的 API 文档,看起来你需要设置 User-Agent
header 才能使用他们的 API,比如
return this.
.get('https://icanhazdadjoke.com', {
headers: { accept: '*/*', 'User-Agent': 'NestJS Dad Joke' },
})
.pipe(map((res) => res.data));
我正在尝试使用他们的文档中指定的 nest.js HttpService 发出请求,但我一直收到无法理解的错误。
我已经导入了 HttpModule
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
@Module({
imports: [HttpModule],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
我正在尝试像这样使用 HttpService:
import { HttpService } from '@nestjs/axios';
import { Controller, Get } from '@nestjs/common';
import { lastValueFrom } from 'rxjs';
import { AppService } from './app.service';
@Controller()
export class AppController {
constructor(
private readonly appService: AppService,
private httpService: HttpService
) {}
@Get()
async getHello(): Promise<string> {
const req = this.httpService.get('https://icanhazdadjoke.com/');
console.log(req)
const res = await lastValueFrom(req);
const data = res.data
return data
}
}
但是当我使用 curl 查询 get 端点时,我收到错误响应
http-test git:(master) ✗ curl localhost:3001
{"statusCode":500,"message":"Internal server error"}%
我的控制台显示以下内容
[11:02:02 a.m.] File change detected. Starting incremental compilation...
[11:02:02 a.m.] Found 0 errors. Watching for file changes.
[Nest] 73798 - 2022-03-22, 11:02:03 a.m. LOG [NestFactory] Starting Nest application...
[Nest] 73798 - 2022-03-22, 11:02:03 a.m. LOG [InstanceLoader] HttpModule dependencies initialized +36ms
[Nest] 73798 - 2022-03-22, 11:02:03 a.m. LOG [InstanceLoader] AppModule dependencies initialized +1ms
[Nest] 73798 - 2022-03-22, 11:02:03 a.m. LOG [RoutesResolver] AppController {/}: +5ms
[Nest] 73798 - 2022-03-22, 11:02:03 a.m. LOG [RouterExplorer] Mapped {/, GET} route +2ms
[Nest] 73798 - 2022-03-22, 11:02:03 a.m. LOG [NestApplication] Nest application successfully started +2ms
Observable { _subscribe: [Function (anonymous)] }
[Nest] 73798 - 2022-03-22, 11:02:06 a.m. ERROR [ExceptionsHandler] Request failed with status code 503
Error: Request failed with status code 503
at createError (/Users/sv/projects/http-test/node_modules/@nestjs/axios/node_modules/axios/lib/core/createError.js:16:15)
at settle (/Users/sv/projects/http-test/node_modules/@nestjs/axios/node_modules/axios/lib/core/settle.js:17:12)
at IncomingMessage.handleStreamEnd (/Users/sv/projects/http-test/node_modules/@nestjs/axios/node_modules/axios/lib/adapters/http.js:322:11)
at IncomingMessage.emit (events.js:412:35)
at endReadableNT (internal/streams/readable.js:1317:12)
at processTicksAndRejections (internal/process/task_queues.js:82:21)
A 503 是服务不可用。我可以使用 curl
和 xh
拨打电话,而且效果很好。检查他们的 API 文档,看起来你需要设置 User-Agent
header 才能使用他们的 API,比如
return this.
.get('https://icanhazdadjoke.com', {
headers: { accept: '*/*', 'User-Agent': 'NestJS Dad Joke' },
})
.pipe(map((res) => res.data));