axios 发 post 请求,后端接收不到参数的完美解决方案

问题背景:

使用axios发post请求时,后端接收不到参数的情况,可能是由于axios请求参数格式不正确或后端接收参数方式不正确所致。为了解决这个问题,我们提供了以下的攻略。

解决方案:

  1. axios请求参数格式问题

当我们使用axios发post请求时,需要把参数放在请求体中,但是axios默认的请求格式是JSON格式,而一些后端框架默认接收的数据格式是form表单格式,所以就会出现接收不到参数的情况。

解决方法:

  • 把请求格式改为form表单格式,使用qs库来序列化参数(示例一)
import axios from 'axios';
import qs from 'qs';

axios({
  method: 'post',
  url: '/api/login',
  data: qs.stringify({
    username: 'admin',
    password: '123456'
  })
})
  1. 后端接收参数方式不正确

当使用axios发post请求时,在后端接收参数时也有可能出现问题。比如常见的使用req.body获取请求参数的方式,在某些极端情况下可能获取不到参数。

解决方法:

  • 使用body-parser库来解析请求体(示例二)
const express = require('express');
const bodyParser = require('body-parser');

const app = express();
app.use(bodyParser.urlencoded({extended: false}));
app.use(bodyParser.json());

app.post('/api/login', (req, res) => {
  const username = req.body.username;
  const password = req.body.password;
})

以上两种解决方案可以各自单独使用,也可以同时使用,根据实际情况灵活选择。这样就可以避免在使用axios发post请求时后端接收不到参数的问题了。

示例一中qs.stringify()的作用是把json对象序列化成form表单格式。

示例二中,我们使用了body-parser中间件。body-parser可以解析请求体,使我们能够使用req.body来获取post请求中的参数值。需要注意的是,需要在使用app.post()方法前添加body-parser中间件。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:axios 发 post 请求,后端接收不到参数的完美解决方案 - Python技术站

(0)
上一篇 2023年6月26日
下一篇 2023年6月26日

相关文章

  • VSCode 使用 Code Runner 插件无法编译运行文件名带空格的文件问题

    问题描述:在使用VSCode的Code Runner插件运行文件名带空格的文件时,会出现编译失败的问题。 问题解决攻略: 1.修改VSCode的设置:点击File -> Preferences -> Settings,在搜索框中输入 “code-runner.executorMap”;双击右侧栏里打开的JSON文件,将下面的设置复制到配置文件中,…

    other 2023年6月26日
    00
  • iOS输出手机系统版本号

    以下是关于“iOS 输出手机系统版本号”的完整攻略,包含了两个示例说明。 输出手机系统版本号 要输出手机的系统版本号,可以使用以下代码: let 系统版本号 = UIDevice.current.systemVersion print(\"手机系统版本号:\\(系统版本号)\") 在这个示例中,我们使用了 UIDevice.current…

    other 2023年8月2日
    00
  • servelet基础

    Servelet基础 Servlet是J2EE规范中定义的一种用于Web应用程序的组件。在Web应用程序中,Servlet通常被用来处理HTTP请求、响应以及请求参数的解析等操作。 Servlet的生命周期 Servlet的生命周期包括初始化、服务处理和销毁三个阶段。 初始化阶段:在Servlet被初始化时会调用其init()方法,用于完成Servlet的初…

    其他 2023年3月28日
    00
  • Java实现规则几何图形的绘制与周长面积计算详解

    Java实现规则几何图形的绘制与周长面积计算详解 本攻略将详细介绍如何使用Java编程语言实现规则几何图形的绘制以及计算其周长和面积。我们将以两个示例说明这个过程。 示例一:绘制矩形 首先,我们需要导入Java的图形库,例如java.awt和javax.swing。然后,我们可以创建一个继承自JFrame的类,用于显示我们的图形。 import java.a…

    other 2023年7月27日
    00
  • 7款易上手c语言编程软件推荐

    7款易上手C语言编程软件推荐 C语言是一门广泛应用于系统编程、嵌入式系统和游戏开发的编程语言。想要学好C语言,选用适合自己的编程软件是非常重要的。本文将为大家推荐7款易上手的C语言编程软件。 1. Dev-C++ Dev-C++是一个免费的、开源的IDE集成开发环境,它支持C语言和C++,可以在Windows操作系统上运行。Dev-C++提供了基本的编辑器和…

    其他 2023年3月29日
    00
  • 戴尔笔记本开不了机怎么办 戴尔笔记本开机黑屏的解决方法

    完整攻略:戴尔笔记本开不了机怎么办 戴尔笔记本开机黑屏的解决方法 硬件问题 如果笔记本电脑一直处于黑屏状态,有可能是硬件出现了故障。以下是几种可能的硬件故障及解决方法。 1. 内存故障 如果你的笔记本电脑在启动时出现蓝屏或无法进入系统的情况,这可能是内存失败致使的。尝试以下解决方案: 查看内存是否牢固地安装在内存插槽中,如果情况不对请尝试重新插拔内存。 如果…

    other 2023年6月27日
    00
  • springboot数据访问和数据视图的使用方式详解

    以下是关于Spring Boot数据访问和数据视图使用方式的完整攻略,包含两个示例说明: 数据访问 添加依赖:在项目的pom.xml文件中添加Spring Boot的数据访问依赖,如Spring Data JPA或MyBatis等。 示例: <dependencies> <!– 添加Spring Data JPA依赖 –> &lt…

    other 2023年10月19日
    00
  • iOS12GM版和正式版、测试版、公测版之间区别有哪些?

    针对“iOS12GM版和正式版、测试版、公测版之间区别有哪些?”这个话题,我可以提供以下详细讲解: iOS版本发布 iOS正式版 iOS正式版是指经过各种测试和开发周期后,对公众发布的、用于手机和平板电脑等设备上的iOS系统的最终版本。iOS正式版的发布时间通常是在苹果公司举行的秋季新品发布会上,会发布最新款的iPhone和iOS系统版本。iOS正式版的版本…

    other 2023年6月26日
    00
合作推广
合作推广
分享本页
返回顶部