gpt4 book ai didi

javascript - 是否可以发布 responseType : 'stream' in Axios?

转载 作者:行者123 更新时间:2023-12-04 11:27:04 33 4
gpt4 key购买 nike

我正在尝试编辑 Axios 的一个实例,以便响应类型应该是 'stream'而不是标准的 JSON。

从 S.O. 的其他帖子中,我似乎并不清楚。如何做到这一点。

这是死路一条??

我当前的 Axios 实例:

import axios from 'axios';
import { URL } from '../urls';
import {
requestHandler,
successHandler,
errorHandler,
} from './Handlers';

const Api = axios.create({
baseURL: `${URL}`,
withCredentials: true,
});

Api.interceptors.request.use((request) => requestHandler(request));
Api.interceptors.response.use((response) => successHandler(response), (error) => errorHandler(error));

export default Api;

实现的 :

const query = {"selections":{"TABLE_A":["COLUMN1"]},"filters":[{"predicates":[]}],"joins":[],"sorts":[],"limit":100,"offset":0}
const response = await Api.post('/data', query);
axios帖子的签名如下所示: axios.post(url[, data[, config]]) Example 1
Example 2

此签名似乎并未表明 axios 的新创建实例具有与流有关的属性。理想情况下,我可以做这样的事情:

const response = await Api.post(URL, responseType: 'stream', query);

或可能:

const response = await Api(responseType: 'stream').post(URL, query);

最佳答案

虽然似乎可以指定 'stream' 的 responseType像这样 :

const response = await Api({
url: '/data',
method: 'POST',
responseType: 'stream',
data: query
});
Axios' xhr.js文件将在浏览器中抛出此警告:

The provided value 'stream' is not a valid enum value of type XMLHttpRequestResponseType.


深入研究文档:
Axios Request Configuration表示 'stream'是可接受的 responseType .具体来说,如果您查看 axios/index.d.ts :
export type ResponseType = 
| 'arraybuffer'
| 'blob'
| 'document'
| 'json'
| 'text'
| 'stream'
但是, XMLHttpRequest 的 WHATWG 规范显示 'stream'无效:
enum XMLHttpRequestResponseType {
"",
"arraybuffer",
"blob",
"document",
"json",
"text"
};
问题是 Axios 在从客户端/在浏览器中发出请求时使用了 XhrAdapter。如果 Axios 在服务器端,将使用 HttpAdapter。 XhrAdapter 需要使 XMLHttpRequests但是服务器可以发出 HttpRequest,因此有大量关于使用 Axios 在 Node 中处理流的帖子,因为 Node 是一个后端解决方案。
在客户端使用 Axios 流式传输结果似乎是不可能的。 fetch() 可能是唯一的选择。

关于javascript - 是否可以发布 responseType : 'stream' in Axios?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60048180/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com