请求后台参数格式问题

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

数据

后台需要的数据

  • 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. python+pytest接口自动化(6)-请求参数格式的确定

    我们在做接口测试之前,先需要根据接口文档或抓包接口数据,搞清楚被测接口的详细内容,其中就包含请求参数的编码格式,从而使用对应的参数格式发送请求.例如某个接口规定的请求主体的编码方式为 applicat ...

  3. axios的请求参数格式(get、post、put、delete)

    1.get请求方式: axios.get(url[, config]) // [字符拼接型]axios.get(url?id=123&status=0') // 等同于 axios.get(u ...

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

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

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

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

  6. Java HttpClient Post请求参数格式为XML

    1.最近忙着做一个接口,拿到文档的时候,what?我当时就震惊了,全都是XML数据传输. 我当时就懵了,哎没得办法,在暑假传输这方面笔者比较熟练json格式数据,简单易懂啊 那就学呗. 2.我在使用的 ...

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

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

  8. 2.5万字长文简单总结SpringMVC请求参数接收

    这是公众号<Throwable文摘>发布的第22篇原创文章,暂时收录于专辑<架构与实战>.暂定下一篇发布的长文是<图文分析JUC同步器框架>,下一篇发布的短文是&l ...

  9. SpringMVC 请求参数绑定

    什么是请求参数绑定 请求参数格式 默认是key/value格式,比如:http:xxxx?id=1&type=2 请求参数值的数据类型 都是字符串类型的各种值 请求参数值要绑定的目标类型 Co ...

随机推荐

  1. margin显示怪异,外边距合并问题

    很多时候我们使用两个div,内层的div设置文字,需要垂直居中与上层div,但是怎么设置样式都不行,vertical-align:middle也不行. 代码: <div style=" ...

  2. 06: Pymysql

    1.1 Pymysql安装与简介 1.安装 pip3 install pymysql 2.介绍(支持python3) 1. pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb ...

  3. 使用ShellExecute打开默认程序(邮件客户端)

    转载:http://www.cnblogs.com/xubin0523/archive/2012/11/01/2749729.html ShellExecute ShellExecute的功能是运行一 ...

  4. C++ vector 删除一个指定元素 和 find 一个指定元素以及遍历删除、 map遍历删除元素和删除find到的元素

    vector: 1.delete element 转载:http://www.cnblogs.com/xudong-bupt/p/3522457.html #include <vector> ...

  5. python循环和布尔表达式总结

    1.Python的for循环是循环遍历序列的有限循环. 2.Python的while语句是一个不定循环的例子.只要循环条件保持为真,它就继续迭代.使用不定循环时,程序员必须注意,以免不小心写成无限循环 ...

  6. 用GDB调试Segmentation 段错误【转】

    本文转载自:http://blog.csdn.net/learnhard/article/details/4879834 调试Linux程序的时候,出现Segmentation Fault是最郁闷的事 ...

  7. SQL 收集

    1.union CREATE TABLE dbo.#testTab ( Id int NOT NULL ) insert into #testTab values(); insert into #te ...

  8. 新增html5标签 例如input的很多属性

    <meter> 标签定义度量衡.仅用于已知最大和最小值的度量. contenteditable="true"> 规定可编辑的内容. <output> ...

  9. Ubuntu下Eclipse安装与编译ns-3遇见的各种问题

    感觉Eclipse比其它东西装起来麻烦多了. 问题拾遗 (1)安装 这一块倒是没有什么大的问题,Linux操作系统也不需要像在Windows操作系统下下一些必须的东西(比如CDT等等).安装好了JDK ...

  10. 如何插入sql数据

    原:http://blog.csdn.net/Weicleer/article/details/47608289