2018-05-09 HTTP参数的表单和JSON区别

背景

在前后端分离的开发组中,

前端通常对自己代码组织的比较细致,都会对AJAX,或者小程序API做封装。

而很多前端开发对后端接口要求的传参 一头雾水,后端开发人员对HTTP一知半解,传参接收不到,说不清楚,互相推脱,谁谁应该改传参方式。

HTTP协议中:Content-Type,估计是非常非常多的人弄不清楚。

本质上Content-Type 要么就是 text/html要么就是 json要么就是 表单。

本质上 非常简单,但总是有人搞不清楚,总是在这个上面浪费时间。

吐槽:本人来公司一年了,总是在给同事讲这个Content-Type。

JSON

Content-Typeapplication/json 的时候,HTTP POST请求数据必须是JSON的。
任何框架都必须遵守这个协议,如果不支持,则说明框架不完善,开发者可能知识比较片面。

例子:

HTTP POST

header:
Content-Type: "application/json"

body:
{
    "key1": value1,
    "key2": value2
}

其中整个JSON就是 参数本身,他没有KEY,没有名称。key1 ,key2严格说只是属性。

表单

Content-Typex-www-form-urlencoded 的时候,POST 的请求数据必须是表单的。
甚至很多开发者印象中,参数就是个名字为key 值为value这种印象,这是非常肤浅的认识。

例子:

HTTP POST

header:
Content-Type: "x-www-form-urlencoded"

body:
key1=value1&key2=value2

何为表单参数,就是以x-www-form-urlencoded为编码的数据参数,其中key1 和 key2就是参数。整个内容就是为 以& 分隔的参数列表。

表单2

例子:这里用Chrome的F12中Network类似的表示HTTP POST请求

HTTP POST

header:
Content-Type: "x-www-form-urlencoded"

body:
key1=value1
key2={"key3":value3, "key4": value4}

那这个其实也是表单!!!!!他的形式是表单里面嵌套了一个JSON字符串,作为其中的一个参数。

弄清楚这个了,其实根本不需要为了传参而争论半天。

什么情况应该用什么传参?

如果参数比较单一,只做GET查询的时候,建议直接GET。URL上面就是表单参数,和POST的表单一模一样。

如果参数还是比较单一,但是参数值太多了,很长很长的字符串,用POST是毋庸置疑的。
这个时候,POST和表单其实是一样的,都是在请求体里面。

如果参数是结构化的,用POST JSON,毋容置疑。

如果参数是结构化的,还需要AUTH,;例如带个TOKEN,那么:

  • 使用上面的表单2,伪JSON表单,这种情况的坏处就是JAVA后端的 Model解析比较别扭,不太好建模。
  • 使用URL + 公共参数、Token,其余参数放在Body,以POST JSON传参,没有坏处,好处就是后端做拦截器,或者Filter的时候比较统一明了,不需要在Model里面涉及 公共参数。唯一的坏处就是,前端同学可能懒得弄。

小程序前端 与后端配合开发的经验

前端封装的框架,必须支持 公共参数追加到URL,并且可以以JSON传参。
后端就可以依据以上的情况,灵活使用参数组织方式了,处理业务的代码专心接受参数,
拦截器直接通过URL获取公共参数和Token,来做一些版本控制,身份认证等功能。

如果前端不支持混和传,要么都在JSON内,要么在URL上面,网上一堆文章说接收不到参数,一边倒说改成表单,改成GET等诸如此类。
那这开发素质需要提升了。

问题是:微信小程序API request 是支持的application/json的!!!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 151,511评论 1 330
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 64,495评论 1 273
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 101,595评论 0 225
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 42,558评论 0 190
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 50,715评论 3 270
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 39,672评论 1 192
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,112评论 2 291
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 29,837评论 0 181
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 33,417评论 0 228
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 29,928评论 2 232
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,316评论 1 242
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 27,773评论 2 234
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,253评论 3 220
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,827评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,440评论 0 180
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 34,523评论 2 249
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 34,583评论 2 249

推荐阅读更多精彩内容