axios中post请求json和application/x-www-form-urlencoded详解

yizhihongxing

Axios中POST请求JSON和application/x-www-form-urlencoded详解

什么是POST请求?

POST请求是HTTP协议中的一种请求方式,在请求体中携带需要传输的数据。可能被用于编辑、更新、上传等操作。POST请求方式相对于GET请求方式来说,更加安全和灵活,所以在实际开发中被广泛使用。

axios中POST请求的两种方式

1. JSON方式

JSON 方式发送 POST 请求时,请求体中数据采用 JSON 格式传输。一般不需要添加 Content-Type 请求头,因为 axios 默认会使用此种方式。

代码示例如下:

axios.post('/api', {foo: 'bar'})
    .then(response => {
        console.log(response.data)
    })
    .catch(error => {
        console.log(error)
    })

2. application/x-www-form-urlencoded 方式

application/x-www-form-urlencoded 方式发送 POST 请求时,请求体中数据采用 key-value 的形式传输。为了支持此种方式,需添加 Content-Type 请求头,值为 application/x-www-form-urlencoded。

代码示例如下:

axios({
    method: 'post',
    url: '/api',
    data: qs.stringify({foo: 'bar'}),
    headers: {'Content-Type': 'application/x-www-form-urlencoded'}
})
    .then(response => {
        console.log(response.data)
    })
    .catch(error => {
        console.log(error)
    })

示例说明

示例一

场景:通过 POST 请求方式提交表单数据。

假设:有一个注册页面,用户需要填写以下信息:用户名、密码、性别、邮箱。

前端代码示例如下:

<form action="/register" method="post">
    <label>用户名:<input type="text" name="username"></label><br>
    <label>密码:<input type="password" name="password"></label><br>
    <label>性别:<input type="radio" name="gender" value="male">男
        <input type="radio" name="gender" value="female">女</label><br>
    <label>邮箱:<input type="text" name="email"></label><br>
    <input type="submit" value="注册">
</form>

后台代码示例如下:

const express = require('express')
const bodyParser = require('body-parser')
const app = express()

app.use(bodyParser.json())
app.use(bodyParser.urlencoded({extended: true}))

app.post('/register', (req, res) => {
    console.log(req.body)
    // do something ...
    res.send('OK')
})

app.listen(3000, () => {
    console.log('Server is running at port 3000...')
})

前端采用默认JSON方式发送POST请求,不需要添加 Content-Type 请求头。

代码示例如下:

axios.post('/register', formData)
    .then(response => {
        console.log(response.data)
    })
    .catch(console.error)

示例二

场景:通过 POST 请求方式上传图片。

假设:有一个上传页面,用户需要选择一张图片进行上传。

前端代码示例如下:

<form enctype="multipart/form-data" action="/upload" method="post">
    <label>选择图片:<input type="file" name="image"></label><br>
    <input type="submit" value="上传">
</form>

后台代码示例如下:

const express = require('express')
const multer = require('multer')
const upload = multer({dest:'/tmp/'})

const app = express()

app.post('/upload', upload.single('image'), (req, res, next) => {
    console.log(req.file)
    res.send('OK')
})

app.listen(3000, () => {
    console.log('Server is running at port 3000...')
})

前端采用 application/x-www-form-urlencoded 方式发送 POST 请求,需要添加 Content-Type 请求头。

代码示例如下:

axios({
    url: '/upload',
    method: 'post',
    data: formData,
    headers: {'Content-Type': 'application/x-www-form-urlencoded'}
})
    .then(response => {
        console.log(response.data)
    })
    .catch(console.error)

以上是使用axios进行POST请求时需要注意的两种方式及使用场景的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:axios中post请求json和application/x-www-form-urlencoded详解 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • 2020前端暑期实习大厂面经

    2020前端暑期实习大厂面经攻略 准备阶段 在进入实习面试准备的过程中,个人建议先掌握以下技能: HTML、CSS和JavaScript等基础技能。 掌握前端框架,例如Vue.js或者React.js等。 了解至少一种后端技术,例如Node.js、Java、Python等。 多练习算法和数据结构的题目。在一些公司面试的过程中,也会有算法题目,所以熟悉相关知识…

    Vue 2023年5月28日
    00
  • Vue-CLI3.x 自动部署项目至服务器的方法步骤

    Vue-CLI3.x 自动部署项目至服务器的方法步骤 Vue-CLI3.x 是一个官方发布的 Vue.js 项目脚手架工具,它能够快速创建一个基于 Vue.js 的项目,并提供了非常方便的开发工具。在使用 Vue-CLI3.x 进行开发过程中,为了能够让我们的项目能够在服务器上运行,需要对项目进行自动部署。本文将为大家介绍基于 Git、NodeJS、PM2 …

    Vue 2023年5月28日
    00
  • antd-DatePicker组件获取时间值,及相关设置方式

    下面是Antd-DatePicker组件获取时间值及相关设置方式的完整攻略。 获取时间值 Antd-DatePicker组件可以方便地获取用户选择的日期或时间。你可以使用onChange回调函数来获取所选日期或时间值。 下面是一个例子,当用户选择日期时,会将所选日期值打印出来: import { DatePicker } from ‘antd’; funct…

    Vue 2023年5月29日
    00
  • vue parseHTML函数源码解析 AST预备知识

    下面我将给出“vue parseHTML函数源码解析 AST预备知识”的完整攻略。 一、概述 在Vue的源码中,parseHTML函数是实现模板编译的关键函数之一。parseHTML函数的作用是将HTML字符串解析为AST(抽象语法树)。 AST是一种抽象的树状表达方式,它将代码的语法结构进行了抽象和归纳,并以树的形式表现出来。在Vue中,AST用于表示模板…

    Vue 2023年5月27日
    00
  • 分享7个成为更好的Vue开发者的技巧

    分享7个成为更好的Vue开发者的技巧 作为一名Vue开发者,提高技能水平是非常重要的,下面是分享7个成为更好的Vue开发者的技巧: 1. 熟悉Vue的核心概念 Vue的核心概念包括:模板语法、组件、生命周期等,必须要熟悉和掌握它们,才能更好地开发Vue应用。 示例代码: <template> <div> <h3>{{ me…

    Vue 2023年5月27日
    00
  • vue脚手架vue-cli的学习使用教程

    Vue脚手架Vue-CLI的学习使用教程 Vue-CLI是Vue.js的官方脚手架工具,使我们可以非常方便地搭建Vue.js项目。下面我们将详细讲解Vue-CLI的学习使用教程。 安装 使用命令行工具打开终端,输入以下命令: npm install -g vue-cli 说明: npm:Node.js包管理器。 -g:全局安装。 vue-cli:Vue-CL…

    Vue 2023年5月27日
    00
  • Vue js 的生命周期(看了就懂)(推荐)

    Vue.js的生命周期 Vue.js 的生命周期是指从 Vue 实例创建、运行到销毁的整个过程,主要包括以下几个阶段: 创建阶段(Initialization): beforeCreate:实例刚在内存中创建出来,但还未初始化 data、methods、computed、watcher 等属性和对象,因此无法访问 data、methods、computed、…

    Vue 2023年5月29日
    00
  • nuxt 页面路由配置,主页轮播组件开发操作

    下面我将为您详细讲解”nuxt页面路由配置,主页轮播组件开发操作”的完整攻略。 Nuxt 页面路由配置 在 Nuxt 中,页面路由可以通过 pages 目录下的目录和文件来进行定义。例如,一个名为 home.vue 的文件就可以对应主页的路由。 以下是一个页面路由的基本结构示例: pages/–| home.vue–| about/—–| inde…

    Vue 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部