当前位置: 首页 > 知识库问答 >
问题:

node.js - 如何调用流式接口?

袁博
2024-05-21

请求接口的代码:

import fetch from "node-fetch";fetch("https://api.openai-sb.com/v1/moderations", {  method: "POST",  headers: {    Authorization: "Bearer ***********",    "Content-Type": "application/json",  },  body: JSON.stringify({ input: "树上有九只鸟,开枪打死一只,请问树上还剩几只鸟?" }),}).then(data => {    console.log(data)});

共有2个答案

东门佐
2024-05-21
import fetch from "node-fetch";fetch("https://api.openai-sb.com/v1/moderations", {  method: "POST",  headers: {    Authorization: "Bearer ***********",    "Content-Type": "application/json",  },  body: JSON.stringify({ input: "树上有九只鸟,开枪打死一只,请问树上还剩几只鸟?" }),}).then(res => {    const reader = res.body.getReader();  while (true) {    const { done, value } = await reader.read();    if (done) {      break;    }    const str = new TextDecoder().decode(value)    console.log(str)  }});
南宫书
2024-05-21

您当前的代码示例中,fetch 函数返回的是一个 Promise 对象,这个对象代表了一次网络请求。当这个请求完成时,它的 then 方法会被调用,并且传入一个处理函数。然而,您的处理函数中的 data 实际上是 Response 对象,而不是请求的结果。要获取请求的结果,您需要对 Response 对象调用 .json() 方法。

以下是修改后的代码:

import fetch from "node-fetch";fetch("https://api.openai-sb.com/v1/moderations", {  method: "POST",  headers: {    Authorization: "Bearer ***********",    "Content-Type": "application/json",  },  body: JSON.stringify({ input: "树上有九只鸟,开枪打死一只,请问树上还剩几只鸟?" }),}).then(response => {    return response.json(); // 将 Response 对象转换为 JSON}).then(data => {    console.log(data); // 现在 data 是请求的 JSON 结果}).catch(error => {    console.error('Error:', error); // 捕获并处理任何错误});

在这个修改后的代码中,我们首先调用 .json() 方法将 Response 对象转换为 JSON 格式的数据,然后我们在第二个 then 方法中处理这个数据。同时,我们也添加了一个 catch 方法来捕获并处理可能出现的任何错误。

注意:在实际使用时,请确保将 "Bearer ***********" 替换为您的实际 API 密钥,并确保该密钥具有足够的权限来访问您想要请求的接口。

 类似资料:
  • 问题内容: 我想像rails一样调试node.js。我尝试了几种方法: Webstorm调试–在这种情况下,每次更改代码后,我都需要单击“重新运行调试” 使用chrome远程调试器的Nodemon –在这种情况下,每次由nodemon重新加载代码后,我都需要重新连接到调试器 pry.js –在这里我需要输入“ eval(pry.it)” –并没有使其更简单的选项,例如“ debug”或pry()

  • LFMultipleLivenessManager 调用流程 LFMultipleLivenessManager 是对LFMultipleLivenessController 调用流程进一步的封装,方便用户直接调用 1 初始化 LFMultipleLivenessManager 输入token token LFMultipleLivenessManager *manager = [[LFMulti

  • 1.初始化 创建LFLivenessSDK对象detector,具体传参请查看demo /** * 获取token * 强烈建议:appID不要放在客户端 */ private void requestToken() { } 设置参数,开启人脸识别 /** * 开始人脸识别 */ LFLivenessBu

  • LFMultipleLivenessManager 调用流程 LFMultipleLivenessManager 是对LFMultipleLivenessController 调用流程进一步的封装,方便用户直接调用 1 初始化 LFMultipleLivenessManager 输入token token LFMultipleLivenessManager *manager = [[LFMulti

  • 1.初始化 创建LFLivenessSDK对象detector,具体传参请查看demo /** * 获取token * 强烈建议:appID不要放在客户端 */ private void requestToken() { } 设置参数,开启人脸识别 /** * 开始人脸识别 */ LFLivenessBu

  • 问题内容: 我对Node.js流有疑问-特别是它们在概念上如何工作。 不缺少有关如何使用流的文档。但是我很难找到流在数据级别如何工作。 我对Web通信HTTP的有限理解是,来回发送完整的数据“包”。类似于个人订购公司目录,客户端向服务器发送GET(目录)请求,然后服务器以目录进行响应。浏览器不会收到目录的页面,而是会收到整本书。 节点流可能是多部分消息吗? 我喜欢REST模型- 尤其是它是无状态的