相关文章推荐
迷茫的手术刀  ·  Java-“this”和“类名.this”以 ...·  1 月前    · 
聪明伶俐的单杠  ·  SuperMap iObjects ...·  2 周前    · 
寂寞的登山鞋  ·  Springboot动态生成网站地图site ...·  2 周前    · 
玩足球的炒粉  ·  时间序列预测(商品销量预测) - 石头木 ·  1 周前    · 
憨厚的火腿肠  ·  判断字符串是否相等_判断两个字符串是否相等 ...·  5 天前    · 
聪明的海龟  ·  (数据科学学习手札42)folium进阶内容 ...·  1 年前    · 
谈吐大方的仙人球  ·  一文搞懂ChatGPT相关概念和区别:GPT ...·  2 年前    · 
狂野的投影仪  ·  Oops!!! - 简书·  2 年前    · 
爱听歌的茶叶  ·  前端跨域解决 (vscode live ...·  2 年前    · 
欢快的花生  ·  JavaScript、jQuery、AJAX ...·  2 年前    · 
Code  ›  node.js - 如何获取 Nestjs Http moudle 请求获得的数据? -
string
https://segmentfault.com/q/1010000041948694
害羞的滑板
2 年前
segmentfault segmentfault
注册登录
问答 博客 标签 活动
发现
✓ 使用“Bing”搜本站 使用“Google”搜本站 使用“百度”搜本站 站内搜索
注册登录
  1. 首页
  2. 问答
  3. node.js
  4. 问答详情

如何获取 Nestjs Http moudle 请求获得的数据?

头像
Lime
28 1 7 15
发布于
2022-06-07
头像
ShirleyYD
111 1 3 13
更新于
2 月 24 日

我尝试使用下列代码获取请求结果,但获得了一个y意外的结果:

import { Injectable } from '@nestjs/common';
import { HttpService } from '@nestjs/axios';
@Injectable()
export class RecaptchaService {
  constructor(private httpService: HttpService) {}
  verifyResponse(reCAPTCHAToken: string, clientIp: string): number {
    const checkResult = this.httpService.post(
      'https://www.recaptcha.net/recaptcha/api/siteverify',
        secret: 'AAAA',
        response: reCAPTCHAToken,
        remote: clientIp,
    console.log(checkResult);
    return 0.2;
}

结果:

Observable {
  source: Observable { _subscribe: [Function (anonymous)] },
  operator: [Function (anonymous)]
}
nestjs rxjs node.js
阅读 4.1k
4 个回答
得票 最新
头像
Lime
28 1 7 15
发布于
2022-06-07
更新于
2022-06-07
✓ 已被采纳

十分感谢前面两位回答所提供的思路,问题已解决。Nestjs封装的Axios会返回一个Observables对象,查阅Rxjs文档后,使用以下代码有效解决了问题和需求:

import { Injectable } from '@nestjs/common';
import { HttpService } from '@nestjs/axios';
import { lastValueFrom } from 'rxjs';
type VerifyResponse = (
  reCAPTCHAToken: string,
  clientIp: string,
) => Promise<number | boolean>;
@Injectable()
export class RecaptchaService {
  constructor(private httpService: HttpService) {}
  verifyResponse: VerifyResponse = async (reCAPTCHAToken, clientIp) => {
    const checkResultObservable = this.httpService.post(
      'https://www.recaptcha.net/recaptcha/api/siteverify',
        secret: 'AAAA',
        response: reCAPTCHAToken,
        remote: clientIp,
    const checkResult = await (await lastValueFrom(checkResultObservable)).data;
    console.log(checkResult);
    return 0.2;
}
头像
神话
1.5k 6 56 96
发布于
2022-06-07
更新于
2022-06-07

HttpModule 导出 HttpService, 它只是暴露了基于 Axios 的方法来执行 HTTP 请求, 而且还将返回类型转换为 Observables。

看文档里面有说, 地址

还有使用的实例

@Injectable()
export class CatsService {
  constructor(private readonly httpService: HttpService) {}
  findAll(): Observable<AxiosResponse<Cat[]>> {
    return this.httpService.get('http://localhost:3000/cats');
你可以试试 verifyResponse 改成这样,然后打印下verifyResponse()的值,看下是什么,也可以参考下楼下的回答
verifyResponse(reCAPTCHAToken: string, clientIp: string): Observable<AxiosResponse<any>> {
社区维基
1
发布于
2022-06-07
更新于
2022-06-07

文档看仔细点就不会有这个问题了...

+import { map } from 'rxjs'
-  verifyResponse(reCAPTCHAToken: string, clientIp: string): number {
+  verifyResponse(reCAPTCHAToken: string, clientIp: string) {
 
推荐文章
迷茫的手术刀  ·  Java-“this”和“类名.this”以及“类名.class”的区分和详解开发者社区
1 月前
聪明伶俐的单杠  ·  SuperMap iObjects Java 之多任务生成地图瓦片_iobject java 创建地图
2 周前
寂寞的登山鞋  ·  Springboot动态生成网站地图sitemap教程开发者社区
2 周前
玩足球的炒粉  ·  时间序列预测(商品销量预测) - 石头木
1 周前
憨厚的火腿肠  ·  判断字符串是否相等_判断两个字符串是否相等 fortran
5 天前
聪明的海龟  ·  (数据科学学习手札42)folium进阶内容介绍 - 费弗里 - 博客园
1 年前
谈吐大方的仙人球  ·  一文搞懂ChatGPT相关概念和区别:GPT、大模型、AIGC、LLM、Transformer、羊驼、LangChain….._ITPUB博客
2 年前
狂野的投影仪  ·  Oops!!! - 简书
2 年前
爱听歌的茶叶  ·  前端跨域解决 (vscode live server proxy 代理) - 简书
2 年前
欢快的花生  ·  JavaScript、jQuery、AJAX、JSON这个之间的关系? - 腾讯云开发者社区-腾讯云
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号