这可能看起来很愚蠢,但是当Axios中的请求失败时,我正试图获取错误数据.
axios.get('foo.com')
.then((response) => {})
.catch((error) => {
console.log(error) //Logs a string: Error: Request failed with status code 404
})
Run Code Online (Sandbox Code Playgroud)
而不是字符串,是否可以获得具有状态代码和内容的对象?例如:
Object = {status: 404, reason: 'Not found', body: '404 Not found'}
Run Code Online (Sandbox Code Playgroud) axios POST请求正在访问控制器上的url,但是将空值设置为我的POJO类,当我浏览chrome中的开发人员工具时,有效负载包含数据.我究竟做错了什么?
Axios POST请求:
var body = {
userName: 'Fred',
userEmail: 'Flintstone@gmail.com'
}
axios({
method: 'post',
url: '/addUser',
data: body
})
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});
Run Code Online (Sandbox Code Playgroud)
浏览器响应:
如果我将标题设置为:
headers:{
Content-Type:'multipart/form-data'
}
Run Code Online (Sandbox Code Playgroud)
请求抛出错误
发布multipart/form-data时出错.Content-Type标头缺少边界
如果我在邮递员中提出相同的请求,它的工作正常并将值设置为我的POJO类.
任何人都可以解释如何设置边界或如何使用axios发送表单数据.
我正在使用React和Redux构建一个前端应用程序,我正在使用axios来执行我的请求.我想访问响应标题中的所有字段.在我的浏览器中,我可以检查标题,我可以看到我需要的所有字段都存在(例如令牌,uid等等),但是当我打电话时
const request = axios.post(`${ROOT_URL}/auth/sign_in`, props);
request.then((response)=>{
console.log(response.headers);
});
Run Code Online (Sandbox Code Playgroud)
我得到了
Object {content-type: "application/json; charset=utf-8", cache-control: "max-age=0, private, must-revalidate"}
Run Code Online (Sandbox Code Playgroud)
这是我的浏览器网络选项卡,因为您可以看到所有其他字段都存在.
最好成绩.
我有一个 Vue.js 应用程序,其中两个文件包含:
import axios from "axios"
这些文件位于应用程序内的 src/lib 中,并在第一行包含 import 语句。
无论 package.json 说什么,在 Github 上运行测试都会导致安装 Axios 1.0.0,现在涉及这些文件的任何测试都会失败并出现上述错误。
将语句更改为const axios = require("axios")也失败;node_modules/axios/index.js 在第 1 行包含一个 import 语句,并在那里抛出异常。
对于此类问题,我经常看到的一个建议是添加"type": "module"到 package.json (与 src/ 处于同一级别)。这会导致所有测试失败,并要求将 vue.config.js 重命名为 vue.config.cjs。这样做会让我: Error: You appear to be using a native ECMAScript module configuration file, which is only supported when running Babel asynchronously,我不明白。
谁能建议在这里做什么?
我使用axios来执行这样的HTTP帖子:
import axios from 'axios'
params = {'HTTP_CONTENT_LANGUAGE': self.language}
headers = {'header1': value}
axios.post(url, params, headers)
Run Code Online (Sandbox Code Playgroud)
它是否正确?或者我应该这样做:
__CODE__
我正在尝试将GET请求作为第二个参数发送,但它在作为url时不起作用.
这有效,$ _GET ['naam']返回测试:
export function saveScore(naam, score) {
return function (dispatch) {
axios.get('http://****.nl/****/gebruikerOpslaan.php?naam=test')
.then((response) => {
dispatch({type: "SAVE_SCORE_SUCCESS", payload: response.data})
})
.catch((err) => {
dispatch({type: "SAVE_SCORE_FAILURE", payload: err})
})
}
};
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试这个时,根本没有任何东西$_GET:
export function saveScore(naam, score) {
return function (dispatch) {
axios.get('http://****.nl/****/gebruikerOpslaan.php',
{
password: 'pass',
naam: naam,
score: score
})
.then((response) => {
dispatch({type: "SAVE_SCORE_SUCCESS", payload: response.data})
})
.catch((err) => {
dispatch({type: "SAVE_SCORE_FAILURE", payload: err})
})
}
};
Run Code Online (Sandbox Code Playgroud)
为什么我不能这样做?在文档中,它清楚地表明它是可能的.有了$_POST它也不行.
我正在使用Axios从客户端向Express.js服务器发送请求.
我在客户端设置了一个cookie,我想从所有Axios请求中读取该cookie,而不是手动添加它们来手动请求.
这是我的客户端请求示例:
axios.get(`some api url`).then(response => ...
Run Code Online (Sandbox Code Playgroud)
我试图通过在Express.js服务器中使用这些属性来访问标头或cookie:
req.headers
req.cookies
Run Code Online (Sandbox Code Playgroud)
它们都不包含任何cookie.我正在使用cookie解析器中间件:
app.use(cookieParser())
Run Code Online (Sandbox Code Playgroud)
如何让Axios自动在请求中发送cookie?
编辑:
我在客户端设置cookie如下:
import cookieClient from 'react-cookie'
...
let cookie = cookieClient.load('cookie-name')
if(cookie === undefined){
axios.get('path/to/my/cookie/api').then(response => {
if(response.status == 200){
cookieClient.save('cookie-name', response.data, {path:'/'})
}
})
}
...
Run Code Online (Sandbox Code Playgroud)
虽然它也使用Axios,但它与问题无关.一旦设置了cookie,我只想在我的所有请求中嵌入cookie.
当我使用以下内容将文件发布到烧瓶服务器时使用原始.html我可以访问烧瓶请求全局中的文件:
<form id="uploadForm" action='upload_file' role="form" method="post" enctype=multipart/form-data>
<input type="file" id="file" name="file">
<input type=submit value=Upload>
</form>
Run Code Online (Sandbox Code Playgroud)
在烧瓶中:
def post(self):
if 'file' in request.files:
....
Run Code Online (Sandbox Code Playgroud)
当我尝试对Axios执行相同操作时,求助栏请求全局为空:
<form id="uploadForm" enctype="multipart/form-data" v-on:change="uploadFile">
<input type="file" id="file" name="file">
</form>
uploadFile: function (event) {
const file = event.target.files[0]
axios.post('upload_file', file, {
headers: {
'Content-Type': 'multipart/form-data'
}
})
}
Run Code Online (Sandbox Code Playgroud)
如果我使用上面的相同uploadFile函数但是从axios.post方法中删除了头json,我在我的flask请求对象的表单键中获得了一个字符串值的csv列表(文件是.csv).如何获取通过axios发送的文件对象?
我已经按照npm包文档中的建议编写了一个axios POST请求
var data = {
'key1': 'val1',
'key2': 'val2'
}
axios.post(Helper.getUserAPI(), data)
.then((response) => {
dispatch({type: FOUND_USER, data: response.data[0]})
})
.catch((error) => {
dispatch({type: ERROR_FINDING_USER})
})
Run Code Online (Sandbox Code Playgroud)
它工作正常,但现在我修改了我的后端API以接受Headers
内容类型:'application/json'
授权:'JWT fefege ......'
现在这个请求在POSTMAN上工作正常,但是在写一个axios调用时,我遵循这个链接并且不能让它工作.
我正在得到 400 BAD Request
这是我修改过的请求
axios.post(Helper.getUserAPI(), {
headers: {
'Content-Type': 'application/json',
'Authorization': 'JWT fefege...'
},
data
})
.then((response) => {
dispatch({type: FOUND_USER, data: response.data[0]})
})
.catch((error) => {
dispatch({type: ERROR_FINDING_USER})
})
Run Code Online (Sandbox Code Playgroud)
任何帮助是极大的赞赏
提前致谢.
axios ×10
javascript ×4
node.js ×3
reactjs ×3
http-headers ×2
vue.js ×2
ajax ×1
ajaxform ×1
content-type ×1
cookies ×1
es6-promise ×1
express ×1
file-upload ×1
http-post ×1
json ×1
react-native ×1
react-redux ×1
redux ×1