请求后台参数格式问题

当请求后台传递参数时,有多中类型,而每一种都需要前后台进行配合,而这有时候会很简单,有时候却十分困难,记录一下,以备后期深究

数据

后台需要的数据

  • form表单
  • 嵌套数据,第二层后用字符串格式 {obj: '{a: 1}'}

    前台设置

  • form请求头 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
  • 参数设置qs.stringify(params)

上述借助了qs插件,看起来很美好,而且也很ok,可惜死活后台接收不到{obj: {a: 1}}, obj的具体参数,各种折腾依旧不行,各种折腾qs,可惜无解,仔细回味 后台一句话,obj的参数是JSON格式字符串,何不手动改造,而不使用 qs

代码

请求参数结构

const params = {
  pageSize: 5,
  currentPage: 1,
  sortParams: [
    {
      sort: 'time desc'
    }
  ]
}

需要改造为

通过上图可以看出,第二层之后的结构保留字符串格式

改造

// 数据结构判断
function type (params) {
  // Symbol类型
  const typeofObje = typeof params
  if (typeofObje !== 'object') return typeofObje
  if (params === null) return 'null'
  const obj = {};
  `Boolean,Number,String,Function,Array,Date,RegExp,Object,Error,Set,Map`.split(',').forEach(e => {
    obj[`[object ${e}]`] = e.toLowerCase()
  })
  const res = Object.prototype.toString.call(params)
  return obj[res]
}
// 改造
const Data = JSON.parse(JSON.stringify(params))
for (let item in Data) {
  if (type(Data[item]) === 'object' || type(Data[item]) === 'array') {
    // 只要是object,array就进行转为JSON字符串
    Data[item] = JSON.stringify(Data[item])
  }
}
// 引入qs
import qs from 'qs'
payLoad = qs.stringify(Data) // 便可以了

总结

  • 在使用过程中,qsstringify有很多种配置,但是我没有找到适合我的,只能手动改造了
  • 感觉难点在于,qs被我认为无所不能,导致没能意识到错误,其次后台其实并不是很清楚,前台到底是如何传参的,他也无法明确指出前台到底该如何传参,只能不断尝试了

form数据请求参数格式的更多相关文章

  1. python正则-字符串处理,主要用于处理请求参数格式为application/x-www-form-urlencoded的表单数据

    #当提交的表单数据格式为application/x-www-form-urlencoded,直接从浏览器复制出来的格式是str_lin(chrome,也是最常见的)或者str_in2(火狐)这两种格式 ...

  2. JS ajax请求参数格式( formData 、serialize)

    $("#importBtn").click(function(){ if($("#conId").val() == ""){ alert(& ...

  3. ExtJS发送POST请求 参数格式为JSON

    背景 这要从我比较懒说起.技术框架ExtJS + resteasy,默认请求方式是ajax get,这后台方法就要写很多@QueryParam来获取参数.我比较喜欢前台用ajax post请求,后台方 ...

  4. ie9 form submit 请求参数问题替代办法

    //隐藏表单 <input id="hdPeriod" name="period" type="hidden" value=" ...

  5. post请求参数Json字符串包含数组的校验和处理 -工作随记-备查工具

    package com.xxxx.live.webapp.selvert; import java.io.BufferedReader; import java.io.IOException; imp ...

  6. Spring RestController 请求参数详解

    Spring RestController 请求参数详解 引用作者jpfss 在阅读之前,最好先了解http请求的get,post,以及各种head头类型,请求参数类型. 无参数,设置RestCont ...

  7. post请求参数Json字符串包含数组的校验和处理

    传入参数类型 {"aaa":"aaaa","bbb":"bbb","ccc":"ccc&q ...

  8. VUE axios 发送 Form Data 格式数据请求

    axios 默认是 Payload 格式数据请求,但有时候后端接收参数要求必须是 Form Data 格式的,所以我们就得进行转换.Payload 和 Form Data 的主要设置是根据请求头的 C ...

  9. Springmvc中 同步/异步请求参数的传递以及数据的返回

    转载:http://blog.csdn.net/qh_java/article/details/44802287 注意: 这里的返回就是返回到jsp页面 **** controller接收前台数据的方 ...

随机推荐

  1. Extjs4.0以上版本智能提示的方法

    最近,公司的BS项目要用Extjs,本屌学过JavaScript..和Jquery Easy UI  ,Jquery..可这个Extjs完全没接触过..可公司项目进度不能掉..只有苦心学习,终于写了点 ...

  2. WebKit示例解读

    如果你曾经在你的App中使用UIWebView加载网页内容的话,你应该体会到了它的诸多不尽人意之处.UIWebView是基于移动版的Safari的,所以它的性能表现十分有限.特别是在对几乎每个Web应 ...

  3. 【每日scrum】NO.2

    1.今天找到了铁大电子地图. 2.需求分析未完成,进度有点慢.

  4. CoreText 使用教程

    [iOS开发] CoreText 使用教程:以创建一个简单的杂志应用为例抢沙发 分类:iPhone开发 标签:CoreText.iOS.iOS开发.iOS开发教程.杂志应用 BBS.CHINAAPP. ...

  5. adoquery怎样判断数据在缓存中有修改啊

    ADOQry.Filtered:=false;       ADOQry.Filtered:=true;       ADOQry.FilterGroup:=fgPendingRecords ;Fil ...

  6. 彻底解决COM端口被占用(在使用中)问题的办法

    今天就遇到这个问题了串口调试的时候发现usb转串口使用的是COM8而串口调试助手里面只有COM1到4,我想去该COM口发现COM1到7都在使用中,找了好多办法都不行,后面在网上找到这篇解决办法的文章, ...

  7. BZOJ3149 CTSC2013 复原 搜索

    传送门 \(N \leq 20\)很适合暴搜-- 第二问最大独立集裸题,\(O(2^NN)\)的算法都能过-- 考虑第一问,使用搜索寻找可行解 每一次枚举一条弦的两个端点,通过位运算计算与其相交的弦的 ...

  8. ElasticSearch 核心概念

    ElasticSearch核心概念-Cluster ElasticSearch核心概念-shards ElasticSearch核心概念-replicas ElasticSearch核心概念-reco ...

  9. 【LOJ】#2479. 「九省联考 2018」制胡窜

    题解 老了,国赛之前敲一个后缀树上LCT和线段树都休闲的很 现在后缀树上线段树合并差点把我写死 主要思路就是后缀树+线段树合并+容斥,我相信熟练的OIer看到这已经会了 但就是不想写 但是由于我过于老 ...

  10. 【NLP】simhash判断文档相似度

    http://blog.csdn.net/heiyeshuwu/article/details/44117473