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

yizhihongxing

问题背景:

使用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日

相关文章

  • Qt实现简单TCP服务器

    下面是关于Qt实现简单TCP服务器的完整攻略: 创建TCP服务器 步骤1:导入Qt网络模块 #include <QTcpServer> #include <QTcpSocket> #include <QHostAddress> 步骤2:创建QTcpServer实例并绑定监听地址和端口号 QTcpServer *tcpSer…

    other 2023年6月27日
    00
  • Python实现批量修改文件名实例

    下面是 Python 实现批量修改文件名的完整攻略。 1. 获取文件夹所有文件名 首先,我们需要获取指定文件夹下的所有文件名。可以使用 Python 内置的 os 库,使用 os.listdir() 方法获取文件夹内所有文件的名称(不包括子文件夹),返回值是一个列表。 import os # 指定文件夹路径 folder_path = "/path…

    other 2023年6月26日
    00
  • 钉钉开发笔记(3)MySQL的配置

    钉钉开发笔记(3)MySQL的配置 简介 MySQL是一种开源的关系型数据库管理系统,具有跨平台、高效、稳定等优点,是钉钉等应用的常用数据库之一。在进行钉钉开发时,MySQL的配置是一个必须要注意的问题。 MySQL的基本配置 在进行MySQL的配置前,首先需要安装MySQL数据库,可以通过官网 https://dev.mysql.com/downloads…

    其他 2023年3月28日
    00
  • Java 无参数构造函数的应用

    Java中的构造函数是用来创建对象并初始化对象的特殊方法。在Java中,如果一个类中没有显示定义构造方法,则系统会自动生成一个无参数的构造方法。这种无参数构造方法称为默认构造方法。 下面来详细讲解一下无参数构造函数的应用。 什么是无参数构造函数? 无参数构造函数就是一个没有任何输入参数的构造函数。在Java中,构造函数的声明和类的名称相同,并且没有返回类型。…

    other 2023年6月26日
    00
  • mysql8.0.11 winx64安装配置方法图文教程(win10)

    下面就为您详细讲解 “mysql8.0.11 winx64安装配置方法图文教程(win10)” 的完整攻略。 1. 下载MySQL8.0.11 首先,我们需要前往MySQL官方网站下载MySQL8.0.11安装包。下载地址为:https://dev.mysql.com/downloads/mysql/8.0.html#downloads 在“MySQL Co…

    other 2023年6月20日
    00
  • Spring Bean生命周期之Bean的注册详解

    Spring Bean生命周期之Bean的注册详解 在Spring中,Bean的注册是Spring容器管理Bean的重要一环。本攻略将会详细讲解在Spring容器中如何注册Bean,并着重介绍三种注册方式。 一、Bean的注册方式 Spring提供了三种Bean的注册方式: XML文件中的Bean定义:Spring最早使用的一种Bean注册方式,需要在XML…

    other 2023年6月27日
    00
  • unity使用rider作为ide的体验

    Unity使用Rider作为IDE的体验 前言 Unity作为目前最流行的游戏引擎之一,它的易用性与灵活性都得到了众多开发者的青睐。而对于游戏开发者来说,选择好一款IDE是非常重要的。在本文中,我们将会讨论Unity与 JetBrains 均鼎力推荐的 IDE——Rider。 Rider是什么 Rider是一款由JetBrains开发的跨平台的C# IDE,…

    其他 2023年3月29日
    00
  • 详解Javascript 中的 class、构造函数、工厂函数

    详解Javascript 中的 class、构造函数、工厂函数 1.构造函数 在JavaScript中,通过构造函数的方式来创建一个对象是非常常见的。构造函数可以通过使用关键字function和this来定义。 示例: function Person(name, age) { this.name = name; this.age = age; } let p…

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