【】关于axios发送post请求返回400状态码【请求失败,code非200的】的问题,如何接收到json格式!

当你接收到400 这里失败请求的时候,其实已经成功访问服务器了,可能你发送的post数据在服务器那边校验失败了,如果你的服务器返回的是json格式的话,在前端接收到的也是json格式,如果你使用axios发送请求的话,在catch的时候,返回的error并不是一个对象,而是这样的字符串:

Error: Request failed with status code 400
    at createError (createError.js?2d83:16)
    at settle (settle.js?467f:18)
    at XMLHttpRequest.handleLoad (xhr.js?b50d:77) 

 

那么axios发送post请求不管成功状态码200,还是失败状态码400或其他,都接收到json格式,让我们前端知道具体是什么原因而请求失败呢【必须访问error.response响应对象】 

 

axios参考文档:https://www.kancloud.cn/yunye/axios/234845

 

本人错误处理代码:

async _getServerResponse () {
        axios.post( config.server_register_url, this.form_data ).then( result => {
            // 只有状态码为200,才能返回true,说明注册成功,其他状态码全部失败!
            return result.data.code === 200;
        } ).catch( ( error ) => {
            // 【务必注意】这里的error输出的不是一个对象【error.response才是一个对象】
            console.log(error);
            if (error.response) {
                // 请求已发出,但服务器响应的状态码不在 2xx 范围内
                console.log( error.response.data );
                console.log( error.response.status );
                console.log( error.response.headers );
            } else {
                // Something happened in setting up the request that triggered an Error
                console.log( "Error", error.message );
            }
            console.log( error.config );
        } );
        return false;
    }

 

### 如何使用 Axios 发送带参数的 JSON POST 请求 为了通过 `axios` 库发送带有参数的 JSON POST 请求,在发起请求前需确保服务器端能够处理 JSON 数据。通常情况下,如果使用的是 Express.js 框架,则可能需要安装并配置 `body-parser` 中间件来解析传入的 JSON 请求体[^2]。 下面是一个完整的例子展示如何利用 `axios` 向指定 URL 发起包含自定义数据的有效载荷 (payload) 的 HTTP POST 请求: ```javascript // 导入 axios 库 const axios = require('axios'); async function postData(url, data) { try { const response = await axios.post(url, data, { headers: {'Content-Type': 'application/json'} }); console.log(`Status Code: ${response.status}`); console.log('Response Data:', response.data); } catch (error) { console.error('Error occurred while sending post request.'); if (error.response) { // 客户端收到响应但是状态码不在 2xx 范围内 console.error(`Server responded with status code ${error.response.status}:`, error.response.data); } else { // 其他类型的错误(网络问题等) console.error(error.message); } } } {假设这里有一个名为 user 的对象} let user = {"name": "John Doe", "email": "[email protected]"}; postData('/api/users', user).then(() => { console.log('Request completed'); }); ``` 此代码片段展示了怎样创建一个异步函数 `postData()` 来执行 POST 请求,并传递目标 URL 和要发送的数据作为参数。注意设置正确的 Content-Type 头部信息以便告知服务器预期接收的内容类型为 application/json。此外还包含了基本的成功/失败回调逻辑用于调试目的。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值