javascript - axios - 从响应对象中获取请求 URI 数据
问题描述
所以,我正在尝试将节点项目从使用request.js迁移到使用axios.js
当我使用请求包时,我可以像这样从响应对象中获取 URI 数据
request(req, (err, response) => {
if (err) console.error(err);
console.log(response.statusCode);
console.log(response.request.uri);
console.log(response.request.uri.hash);
console.log(response.request.uri.host);
});
但是当我像这样使用 axios
axios(req)
.then(response => {
console.log(response.status);
console.log(response.request.uri);
})
.catch(err => console.error(err));
我的response.request.uri未定义
那么,我是不是使用了错误的 axios 包,还有另一种方法可以获取我想要的信息,或者 axios 不支持它?
解决方案
您可以通过访问response.config.url
or response.request.responseURL
来访问它,但如果您只想要 URI,则需要使用正则表达式,或者您可以通过使用数组或字符串方法来使用 JS。
例子:
const axios require('axios');
const url = require('url');
axios(req)
.then(response => {
const parsedURL = url.parse(response.config.url);
console.log(parsedURL.host);
})
.catch(err => console.error(err));
如果您不需要解析的 URL 信息并且不想要另一个包:
// Remove the URL Protocol (https:// & http://) using regex.
const removeHttpProtocol = (url) => url.replace(/(^\w+:|^)\/\//, '');
axios(req)
.then(response => {
console.log(const responseURI = removeHttpProtocol(response.config.url);
console.log(responseURI);
})
.catch(err => console.error(err));
推荐阅读
- c# - 使用 LINQ Query 加入两个列表并仅显示相关数据
- grails - 更新用户配置文件时,无需用户输入即可将权限分配给用户
- spring-boot - 我是响应式编程的新手,尝试使用 Mono 和 concat 进行 UPSERT 操作,并在存储库中存在值
- html - CSS-Grid 中的网格
- javascript - React 刷新重定向到主页,与刷新页面的 url 相同
- typescript - Angular Test Simple Component -> NullInjectorError: No provider for xxx
- javascript - 在 Kotlin 的 WebView 的 JavascriptInterface 中执行页面的 JavaScript
- android - 当我点击 TextField 然后键盘打开但 TextField 没有在顶部颤动 Android 上滑动
- javascript - jQuery 函数不运行以显示“模态”元素
- ios - 通过 iOS 中的配置文件手动安装后,自签名证书不起作用