小程序网络请求wx.request({})是需要在header中添加参数content-type

header: {'content-type': 'application/json' // 默认值
},

有时参数为application/json的请求后台接收参数为空,改成application/x-www-form-urlencoded就好了,所以查了一下相关资料

常见的表单数据提交数据的编码类型content-type

  • application/x-www-form-urlencoded
  • application/json
  • multipart/form-data
  • text/xml

大家都知道,HTTP 协议是以 ASCII 码传输,建立在 TCP/IP 协议之上的应用层规范。规范把 HTTP 请求分为三个部分:状态行、请求头、消息主体。

协议规定 POST 提交的数据必须放在消息主体(entity-body)中,但协议并没有规定数据必须使用什么编码方式。

服务端通常是根据请求头(headers)中的 Content-Type 字段来获知请求中的消息主体是用何种方式编码,再对主体进行解析。所以说到 POST 提交数据方案,包含了 Content-Type 和消息主体编码方式两部分。

(1)application/x-www-form-urlencoded

最常见的 POST 提交数据的方式。浏览器的原生 form 表单,如果不设置 enctype 属性,那么最终就会以 application/x-www-form-urlencoded 方式提交数据。

首先,Content-Type 被指定为 application/x-www-form-urlencoded;其次,提交的数据按照 key1=val1&key2=val2 的方式进行编码,key 和 val 都进行了 URL 转码。大部分服务端语言都对这种方式有很好的支持。

(2)application/json

这个 Content-Type 作为响应头大家肯定不陌生。实际上,现在越来越多的人把它作为请求头,用来告诉服务端消息主体是序列化后的 JSON 字符串。由于 JSON 规范的流行,除了低版本 IE 之外的各大浏览器都原生支持 JSON.stringify,服务端语言也都有处理 JSON 的函数,使用 JSON 不会遇上什么麻烦。

JSON 格式支持比键值对复杂得多的结构化数据。
Google 的 AngularJS 中的 Ajax 功能,默认就是提交 JSON 字符串。

(3)multipart/form-data

我们使用表单上传文件时,必须让 form 的 enctyped 等于这个值。
消息主体里按照字段个数又分为多个结构类似的部分,每部分都是以 –boundary 开始,紧接着内容描述信息,然后是回车,最后是字段具体内容(文本或二进制)。如果传输的是文件,还要包含文件名和文件类型信息。消息主体最后以 –boundary– 标示结束。

(4)text/xml

XML-RPC是一种使用 HTTP 作为传输协议,XML 作为编码方式的远程调用规范
XML-RPC 协议简单、功能够用,各种语言的实现都有。它的使用也很广泛,如 WordPress 的 XML-RPC Api,搜索引擎的 ping 服务等等。

注:
如果数据是简单、平面的key-value键值对,那么使用application/x-www-form-urlencoded简单实用,不需要额外的编解码
如果数据是复杂的嵌套关系,有多层数据,那么使用application/json会简化数据的处理

简单点说,application/x-www-form-urlencoded是以表单的形式提交,数据拼接方式为key=value的方式,后台如果使用对象接收的话,可以自动封装成对象

@RequestMapping("xxx")
public Object xxx(Object o){}

application/json需要封装成对象的话,可以加上@RequestBody注解

@RequestMapping("xxx")
public Object xxx(@RequestBody Object o){}

小程序开发--content-type类型中application/json和application/x-www-form-urlencoded区别相关推荐

  1. 微信小程序js数组初始化_微信小程序开发之改变data中数组或对象的某一属性值...

    前言:在小程序的开发中,我们在view中便利data中数组或对象时,很多情况下需要在js中动态改变数组或者对象中某一香的属性值. 效果图: 我给大家总结了案例如下: wxml如下: {{item.we ...

  2. 小程序开发--- 1. 获取数组中某个字段的值或获取列表索引

    最近开始自己琢磨开发微信小程序,遇到些问题,现在做一下总结. 今天有遇到一个需要获取到列表中某一项值,并在其他地方调用的问题.其实思路和获取列表索引的道理一样.如果你还不知道如何获取列表的索引,那么现 ...

  3. 小程序开发之删除数组中某个元素

    因为小程序里面不是用remove这个方法,所以特别提一下. 改用splice这个方法来删除数组中的元素. 因为是要删除数组里面特定元素,所以我们先用findeIndex这个方法查询到指定元素所在集合中 ...

  4. 小程序开发学习(1)---app.json详解篇

    文章目录 1.授权登录 2.pages 3.实现tab栏 3.1 position 3.2 backgroundColor 3.3 borderStyle 3.4 color 3.5 selected ...

  5. 微信小程序开发--如何在swiper中显示两个item以及下一个item的部分内容

    如何在swiper中显示两个item以及下一个item的部分内容 我所实现的效果 我实现的代码 <!--图片轮播图--><!--要展示两个item 以及下一个item的部分内容,ci ...

  6. 从环境部署到运营推广,蚂蚁特色的一站式小程序开发体验

    **摘要**:以"数字金融新原力(The New Force of Digital Finance)"为主题,蚂蚁金服ATEC城市峰会于2019年1月4日于上海如期举办.ATEC移 ...

  7. 经验总结--我的小程序开发和进化之路

    前言 从接触小程序开始,到现在大大小小做了差不多有五六个小程序项目了,小项目的只有几个页面,大的项目有几十个页面.此篇文章是对之前项目的一个总结,项目的脚手架,开发框架和后期的优化是一个逐渐进化完善的 ...

  8. 中电金信源启小程序开发平台 赋能金融+业务生态共享共建

    导语:源启小程序开发平台立足于"为金融业定制",从小程序全生命周期的角度出发,助力银行.互联网金融.保险.证券客户实现一站式小程序开发.发布.运营与营销.企业可以通过源启小程序开发 ...

  9. 小程序开发(1)-之目录结构和文件说明

    #以下图片是小程序的目录结构,建议所有的目录都使用小写字母,不使用驼峰格式 #组件 components是自定义组件目录,对一些常用的组件的封装 #配置文件 config是配置文件,存有一些常用的字段 ...

  10. 了解微信小程序、掌握微信小程序开发工具的使用、了解小程序的目录以及文件结构、掌握小程序中常用的组件、掌握WXML、WXSS、WXS的基本使用

    1 微信小程序介绍以及开发准备 1.1 了解微信小程序 百度百科: 微信小程序,简称小程序,英文名Mini Program,是一种不需要下载安装即可使用的应用,它实现了应用"触手可及&quo ...

最新文章

  1. 简单Android手机APP地图,android最简单手机地图APP(只需5分钟)
  2. Haproxy + Pacemaker 实现高可用负载均衡(二)
  3. leetcode 225. 用队列实现栈(维护两个队列用于倒替元素,使用和1进行按位与,实现队列切换)
  4. Linux 命令之 curl 的选项(英文版)
  5. MacBook创建docker私有仓库docker server gave HTTP response to HTTPS client 问题处理办法
  6. python基础课程第12章_流畅的python学习笔记-第12章
  7. iQOO 5G版8月上市,价格更加亲民!
  8. 为什么程序员愿意加入管理糟糕的创业公司?
  9. 【Android MyEclipse】no projects are found to import 如何解决
  10. centos 5.8 mysql_linux centos5.8装yum安装mysql
  11. linux设备驱动归纳总结(三):5.阻塞型IO实现【转】
  12. android mapabc 地图 无法 拖动、缩放问题
  13. python爬虫爬取网站视频_python3爬虫爬取视频(一)
  14. 苹果mac如何连接打印机
  15. 景区电商平台网站建设方案
  16. 英语发音规则---s发/s/的读音规则
  17. 【Linux】Linux虚拟内存空间描述
  18. MotoSimEG-VRC软件:多机器人信号交互与PLC功能
  19. 汇报工作,被CTO怼了!让我读下麦肯锡的:结构化思考、电梯间汇报法、MECE法则!...
  20. 如何使用origin跨工作簿进行公式计算

热门文章

  1. Linux服务器分区的方案
  2. 【科普】关于下载的原理,种子磁力一些基本知识
  3. Incremental Learning vs Online Learning
  4. 基于DS3231时钟模块的stm32 程序,源码
  5. 学计算机的感想300字,计算机毕业的自我鉴定范文300字(精选5篇)
  6. js面向对象——javascript王国的一次旅行,一个没有类的世界怎么玩转面向对象?
  7. “本地游戏管理程序” 源码分享
  8. java装箱与拆箱原理_深入理解Java中的装箱和拆箱
  9. wep加密破解原理简述 实战
  10. 倒影(reflections)效果的实现