问题标签 [axios]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
39678 浏览

javascript - 等待循环中调用的所有承诺完成

我正在使用axios promise 库,但我认为我的问题更普遍。现在我正在循环一些数据并在每次迭代中进行一次 REST 调用。
随着每次调用完成,我需要将返回值添加到对象中。在高层次上,它看起来像这样:

当然,发生的事情是当我调用console.logmainObject时还没有任何数据,因为 axios 仍在伸出援手。处理这种情况的好方法是什么?

Axios 确实有一个all方法和一个姊妹方法spread,但是如果您提前知道要进行多少次调用,它们似乎很有用,而在我的情况下,我不知道会有多少循环迭代。

0 投票
5 回答
9963 浏览

javascript - 使用es6类扩展axios

我对创建 API 包装器并使用 es6 类从 axios 扩展很感兴趣。这怎么可能?axios 有一个方法 .create() 允许你生成一个新的 axios 对象

我知道我可以访问这个let instance = axios.create()

有什么想法吗?

尝试 1

尝试 2

0 投票
1 回答
139 浏览

javascript - 单元测试依赖项没有被嘲笑

我正在尝试将开玩笑的单元测试添加到我的新 react-redux 项目中。我创建了我的第一个测试文件来测试我的一个容器,例如:

在 event-form.js 文件中,我从动作中导入了一个函数,即:

在 actions.index.js 文件中,我正在导入 axios 模块:

如果我此时尝试运行测试,我会从 axios 代码中得到错误:

我认为开玩笑的整个事情就是一切都被嘲笑了。actions/index.js 似乎是如何随着它的导入而被初始化的?

0 投票
1 回答
424 浏览

javascript - 用于单元测试的 NodeJS 中的模块导出回调

我有以下代码在我的项目中使用 axios 建立服务器连接:

我正在使用 Jest 作为测试框架,并且我成功地模拟了 axios,但是我对这个 then-Function 有一个问题:

但是,在运行测试时,我收到以下错误消息:

TypeError: _axios2.default.get(...).then 不是函数

我必须以某种方式找到一种方法来告诉它存在并且是一个函数。我必须在 module.exports 中执行此操作。关于如何做到这一点的任何想法?

0 投票
1 回答
339 浏览

node.js - Phoenix 应用程序中的 Poison.Encoder 异常

我有一个使用 Guardian 和 Uberauth 保护的凤凰应用程序,它从节点应用程序(GraphQL 服务器)接收帖子。通过在授权标头中传递 JWT 来保护它。

授权似乎工作正常,但是在我的 Phoenix 控制器中,它正在爆炸

** (FunctionClauseError) no function clause matching in Poison.Encoder.BitString.chunk_size/3 (poison) lib/poison/encoder.ex:127: Poison.Encoder.BitString.chunk_size(<<5, 230, 171, 122, 183, 178, 38, 22, 198, 114, 35, 162, 36, 133, 51, 83, 19, 34, 34, 194, 39, 71, 151, 2, 35, 162, 36, 165, 117, 66, 39, 13::size(4)>>, nil, 0)

在我添加身份验证之前,它工作正常。更奇怪的是,一个 curl 请求,如下所示:

curl -i -H "authorization: eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJVc2VyOjIiLCJleHAiOjE0OTU2MjU3MjEsImlhdCI6MTQ2NDA4OTcyMSwiaXNzIjoiU2hvcHNoYXJlIiwianRpIjoiMDE2OTJjMzctM2QxYi00Yzc5LThiMjYtYzExN2QyNTM1MGI5IiwicGVtIjp7fSwic3ViIjoiVXNlcjoyIiwidHlwIjoidG9rZW4ifQ.GfqVSw3hPsy-zOp1yx6IXAGhM4uX0CsMbU3DHqtFCn7SQYPi24DJ2F4yC48cfiQi82-hvpUoxdnFm_x5osBb3w" -H "Accept: application/json" -H "Content-Type: application/json" -X POST -d '{"comment": {"content": "test"}}' http://localhost:8081/api/v1/current_user/products/1/comments

正如预期的那样,100% 正确工作!

我传出的 Axios 请求如下所示:

frontend_1 | { headers: frontend_1 | { authorization: 'Bearer eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJVc2VyOjIiLCJleHAiOjE0OTU3OTg4OTUsImlhdCI6MTQ2NDI2Mjg5NSwiaXNzIjoiU2hvcHNoYXJlIiwianRpIjoiYWE2YTE2M2YtYzM5ZC00ODVjLTgwMjEtMDMxMjUwNzc4YjcxIiwicGVtIjp7fSwic3ViIjoiVXNlcjoyIiwidHlwIjoidG9rZW4ifQ.4vosfEx69s_90UlCkgWNbxoNNAKuckYvqNRsqfznvzddI-k63LaXz7MWum82aSiHDkiw7L3tk6df8tZVh2Zz_A', frontend_1 | Accept: 'application/json', frontend_1 | 'Content-Type': 'application/json' }, frontend_1 | timeout: 0, frontend_1 | transformRequest: [ [Function: transformResponseJSON] ], frontend_1 | transformResponse: [ [Function: transformResponseJSON] ], frontend_1 | method: 'post', frontend_1 | url: 'http://api:8080/api/v1/current_user/products/2/comments', frontend_1 | data: { comment: { content: 'test' } }, frontend_1 | withCredentials: undefined }

我有点不知道下一步该尝试什么。似乎无论我在有效负载中发送什么,Elixir 中的字符列表似乎都保持不变。我似乎无法解码该字符列表中的内容,我怀疑这是正在发生的事情的线索。

0 投票
3 回答
23898 浏览

javascript - 使用 axios 和 express 处理 POST 请求

我似乎无法弄清楚为什么当我使用 axios.post 方法提供数据主体时,它在我的服务器上被捕获为未定义。

我有以下带有代码片段的文件:

应用程序.js:

server.js:

我如何使用 axios 正确处理 POST 数据?我错过了什么吗?

成功返回正常,但似乎在请求中的任何地方都找不到用户名/密码

0 投票
1 回答
643 浏览

reactjs - 包装 axios 并访问 redux 状态

我想将 axios 包装在一个实用程序函数中,以便我可以添加保存在 redux 状态中的基本 url 和身份验证令牌

最简单的方法是什么?

我现在如何将它连接到 redux 以便我可以访问 state 和 props?

0 投票
1 回答
1031 浏览

xmlhttprequest - httponly cookie 在后续的 xhr 请求中不可用

背景

我有一个安静的后端,React + Redux 前端,我正在努力防止 CSRF 和 XSS 攻击。

前端从 API 请求 CSRF 令牌。API 响应在 HttpOnly cookie 和响应正文中设置 CSRF 令牌。redux reducer 将令牌(来自响应正文)保存到 redux 存储。

如果我在主容器中请求令牌componentDidMount(),一切正常,但问题是这是一次性的。相反,由于对 API 的请求通过自定义中间件,我希望中间件在本地不存在 CSRF 令牌时请求它。

问题

流程如下(在 Chrome 50 和 Firefox 47 上测试):

  1. 已请求 CSRF 令牌。存储在 HttpOnly cookie 和 redux 存储中的令牌
  2. 请求带有X-CSRF-Token标头集的原始 API 调用。cookie 未发送
  3. 由于缺少 cookie,从 API 接收 403。API 以新的 HttpOnly cookie响应。Javascript 看不到这个 cookie,所以 redux 存储没有更新。
  4. 使用步骤 2 中的 X-CSRF-Token 标头和步骤 3 中的 cookie 请求的其他 API 调用。
  5. 由于 cookie 与 X-CSRF-Token 不匹配而收到 403

如果我在第 2 步之前添加延迟window.setTimeout,cookie 仍然没有发送,所以我认为浏览器没有足够的时间保存 cookie 不是竞争条件?

动作创建者

中间件

0 投票
2 回答
4767 浏览

reactjs - reactJS如何阻止它监听ajax请求

我在componentdidmount中有ajax调用。然后在 ajax 承诺中设置状态。

代码是这样的

当我导航到其他路线时,这会导致错误“无法在未安装的组件上设置状态”。

所以我认为我应该做的是在componentwillunmount中移除axios监听器。你会怎么做?

0 投票
1 回答
206 浏览

ajax - Redux action ajax 结果未发送到 reducer

我刚刚开始尝试 Redux,我知道中间件对于进行 ajax 调用是必不可少的。我已经分别安装了 redux-thunk 和 axios 包,并尝试将我的结果作为状态挂钩并将 ajax 结果呈现给我的组件。但是,我的浏览器控制台显示错误,并且我的减速器无法获取有效负载。

错误:

未捕获的错误:操作必须是普通对象。使用自定义中间件进行异步操作。

这是我的代码的一部分以及如何连接中间件:

我的行动:

减速器:

您可以看到状态routes的大小为 0,但操作有效负载的数组为 3。

我最近的动作

非常感谢任何帮助,谢谢。