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

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日

相关文章

  • vue 代码高亮插件全面对比测评

    下面是“vue 代码高亮插件全面对比测评”的完整攻略: 需求与介绍 本次测评旨在比较十字架(@kazupon/vue-i18n、vue-i18n、i18next)三种Vue国际化插件的优缺点。 插件介绍 @kazupon/vue-i18n @kazupon/vue-i18n 是一个基于 Vue.js 的双向绑定的国际化插件,是 vue-i18n 的作者 ka…

    Vue 2023年5月27日
    00
  • Vue实现生成二维码的简单方式

    下面是Vue实现生成二维码的简单方式的攻略: 1. 安装库 首先,我们需要安装一个能够方便地生成二维码的库,这里推荐使用 qrcodejs2。 安装方式如下: npm install qrcodejs2 –save 2. 创建组件 接下来,我们创建一个 Vue 组件,用于生成二维码。 <template> <canvas ref=&quo…

    Vue 2023年5月27日
    00
  • Vue父组件调用子组件函数实现

    下面是详细讲解如何通过Vue父组件调用子组件函数实现: 步骤一:创建子组件 在Vue中,我们通过Vue.component来创建一个组件。创建子组件的代码示例: Vue.component(‘child-component’, { methods: { childFunc() { console.log(‘子组件函数执行’) } } }) 在以上示例中,我们…

    Vue 2023年5月28日
    00
  • vue请求本地自己编写的json文件的方法

    介绍如下: 一、准备JSON文件 首先,需要准备好本地的JSON文件,示例文件可以参考以下结构: { "data": [ { "id": 1, "title": "文章1", "content": "这是文章1的内容" }, { &quot…

    Vue 2023年5月28日
    00
  • Vue项目部署上线全过程记录(保姆级教程)

    非常感谢您对Vue项目上线过程的关注。以下是我整理的“Vue项目部署上线全过程记录(保姆级教程)”的详细攻略。 确认服务器环境在开始之前,请确保您已经购买了云服务器,在服务器上安装好操作系统和需要的软件环境。推荐使用Linux系统,并保证服务器具备如下配置: 操作系统:CentOS 7/Ubuntu 14.04及以上版本; CPU:1核及以上; 内存:2GB…

    Vue 2023年5月28日
    00
  • 利用vue对比两组数据差异的可视化组件详解

    你好,下面是对“利用vue对比两组数据差异的可视化组件详解”的完整攻略的详细讲解: 利用vue对比两组数据差异的可视化组件详解 什么是数据差异可视化组件? 数据差异可视化组件可以让用户直观地看到两组数据之间的区别,通常用于比较历史数据和最新数据或两个数据集之间的差异。利用数据差异可视化组件,用户可以快速了解两组数据之间的变化情况,从而更好地进行决策和分析。 …

    Vue 2023年5月29日
    00
  • Vue实例初始化为渲染函数设置检查源码剖析

    首先,了解Vue实例的初始化过程非常重要。在创建Vue实例时,Vue会进行一些默认的初始化步骤,其中之一就是为渲染函数设置一些检查源码,以便在开发过程中发现错误。 具体来说,Vue会在初始化过程中调用initRender函数,该函数的主要作用是为渲染函数设置检查源码。其中,Vue会创建一个 Watcher对象并将其添加到当前Vue实例的watchers数组中…

    Vue 2023年5月28日
    00
  • Vue3发送post请求出现400 Bad Request报错的解决办法

    以下是 “Vue3发送post请求出现400 Bad Request报错的解决办法” 的完整攻略: 问题描述 在使用 Vue3 进行 post 请求时,可能会遇到 400 Bad Request 错误,这通常是因为请求的数据格式或参数设置错误导致的。 解决方法 1. 设置请求头 可以尝试设置请求头中的 Content-Type 和 Accept 字段,确保发…

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