首页 > 其他分享 >后端接口要求请求头的Content-Type:application/x-www-form-urlencoded

后端接口要求请求头的Content-Type:application/x-www-form-urlencoded

时间:2022-12-01 23:56:22浏览次数:77  
标签:www const 请求 form Content application urlencoded

背景

使用apipost接口请求工具调试后端接口的时候,后端要求的类型是application/x-www-form-urlencoded,采用其他方式无法获取到数据,前端如何发起网络请求呢?

以类型为application/x-www-form-urlencoded发起请求

以其他类型如:form-data发起请求

基础知识

application/x-www-form-urlencoded是常见的web 表单提交方式,参数通常在请求body中以key=value&key=value将键值对的参数用&连接起来方式传递。

服务端代码

以下采用node的express框架设置

const express = require("express");
const app = express();

app.get("/", (req, res) => {
  res.send("ok");
});

// 设置x-www-form-urlencoded方式解析
app.use(express.urlencoded({ extended: false }));

app.post("/test", (req, res) => {
  res.setHeader("Access-Control-Allow-Origin", "*");
  res.send(req.body);
});

app.listen(8081, () => {
  console.log("server is running at http://localhost:8081");
});

前端可采用的方式

方式1:表单

 <form action="http://localhost:8081/test" method="post">
      <input type="text" name="name" value="xm" />
      <input type="text" name="age" value="20" />
      <input type="submit" value="提交" />
    </form>

上面点击提交后可以正确的返回服务端的数据

控制台结果

服务端响应结果

方式2: axios请求

有的时候我们不是采用表单的方式,我们需要通过第三方库axios按照后端的接口方式来请求数据

方式a:使用URLSearchParams来构建参数

async created() {
    const params = new URLSearchParams()
    params.append('username', 'zs')
    params.append('password', '456')

    const result = await this.$http.post('http://localhost:8081/test', params, {
      headers: {
        'Content-Type': 'application/x-www-form-urlencoded',
      },
    })

    console.log(result)
  },

效果图:

方式b:使用qs来构建参数

const qs = require('qs')
export default {
  data() {
    return {
      result: '',
    }
  },
  async created() {
    const result = await this.$http.post(
      'http://localhost:8081/test',
      qs.stringify({ name: 'hahah', age: 66 }),
      {
        headers: {
          'Content-Type': 'application/x-www-form-urlencoded',
        },
      }
    )

    console.log(result)
  },
}
</script>

参考文章

https://blog.csdn.net/haozi_love/article/details/123292203

标签:www,const,请求,form,Content,application,urlencoded
From: https://www.cnblogs.com/it774274680/p/16943181.html

相关文章

  • WebKitFormBoundary型POST怎么解决
    curl网站:https://curlconverter.com/  复制粘贴到下图红框中  然后使用生成的请求头和参数发起请求即可......
  • buuoj-[MRCTF2020]Transform
    1.winexe64bit无壳2.存在关键字符串3.ctrl+x跟踪找到程序主体4.浅浅分析+百度lobyte是啥一下5.脚本arr1=[0x67,0x79,0x7B,0x7F,0x75,0x2B,0x3C,0x52,......
  • test cpu performance with matrix multiplication
    一需求:测试cpu计算性能二方法:1.使用一定规模方阵执行乘法运算,不需要保存结果。2.根据CPU核数开启线程执行乘法运算3.事先将线程执行任务放入线程对应的任务容器,然后开启线......
  • insmod提示“Invalid module format”
    1.现象:编译usb驱动程序,提示2.原因:在不同机器上编译了驱动导致无效格式3.解决:在目标机器搭建好编译环境,执行编译内核操作即可makemakeinstallmodprobeusbnetinsmodXXX.kom......
  • 续:遭遇www.6781.com劫持浏览器和Worm.Snake.a等
    endurer原创2006-12-08第1版昨天继续帮那位遭遇​​www.6781.com​​劫持浏览器和Worm.Snake.a等的网友处理。见:遭遇​​www.6781.com​​​劫持浏览器和Worm.Snake.a等......
  • FormData()浏览器内置的对象 不需要引入js 主要用于保存文件 发送给后端
    FormData()浏览器内置的对象它是一个构造函数 不需要引入js文件  概念:1.`FormData`是浏览器提供的内置对象2.以`key/value`的形式保存数据3.能够结合`ajax`......
  • 使用 FormData上传file文件 使用接口通过FormData上传头像
    文件选择标签type="file"属性可以获取选择文件accept="image/*"推荐选择图片类/*通配,所有placeholder提示信息语法:1.`accept`属性引导用户选择文件1.多个......
  • form-axios提交数据
    form-axios提交数据<body><h2>ajax+form</h2><!--action提交的接口地址method提交的方法--><formaction="http://ajax-api.ith......
  • 部署jeckins发布php项目、修改jenkins以www用户运行
    部署使用:​​https://www.imooc.com/article/30338​​   1.修改Jenkins配置文件1.1修改$JENKINS_USER打开jenkins配置文件:➜vim/etc/sysconfig/jenkins1找到如......
  • ohci-platform.ko
    usb/host/ohci-platform.ko'ismissing对代码中的有些结构一直不是非常明确,比方platform_device与platform_driver一直分不清关系。在网上搜了下,做个总结。两者的工作顺......