当前位置: 首页 > news >正文

前端发送请求之参数处理---multipart/form-data与application/x-www-form-urlencoded

Content-Type就是指 HTTP 发送信息至服务器时的内容编码类型,服务器根据编码类型使用特定的解析方式,获取数据流中的数据。

其实前后端发送请求的方式有 text/plain、application/json、application/x-www-form-urlencoded、
multipart/form-data
等,这版先介绍【multipart/form-data】与【application/x-www-form-urlencoded】。

1、application/x-www-form-urlencoded

前端发送请求,需要对入参做处理

const params = new URLSearchParams();// options为需要传递的参数,如{a: 3, b: 4}Object.keys(options).forEach(key => {params.append(key, options[key]);});

调用请求:

return request({path: `/apis/list`,params: params,headers: {'Content-Type': 'application/x-www-form-urlencoded'},method: 'POST',});

2、multipart/form-data

let formData = new FormData();// options为入参,格式如:{a: 3, b: 4}Object.keys(options).forEach(key => {formData.append(key, options[key]);});

发送请求:

return request({path: `/apis/list`,params: formData,headers: {'Content-Type': 'multipart/form-data'},method: 'POST',});

两种发送请求的方式都是将入参转换:{a:1,b:2} => a=1&b=2,可以在底层采用统一的方式来处理。

/* 对象转化URL({a:1,b:2} => a=1&b=2) */
export const toUrlParam = (obj) => {var url = '';Object.keys(obj).forEach((key) => {url += key + '=' + obj[key] + '&';});if (url && url.length > 0) {url = url.substring(0, url.length - 1);}return url;
};
const instance = axios.create({timeout: 30000, // 超时,401headers: {'X-Requested-With': "XMLHttpRequest"},withCredentials: true
});export const request = ({ path, params = {}, headers = {}, method = 'post' }) => {method = method.toLocaleLowerCase();let url = `${API_URL}${path}`;if (method === 'get') {url += `?${toUrlParam(params)}`;}return instance.request({method,url,data: toUrlParam(params),headers});
};

直接发送请求:

return request({path: `/apis/list`,params: options,method: 'POST',});

谨以此记录两种请求方式,后续会记录剩下的请求方式~

http://www.lryc.cn/news/260426.html

相关文章:

  • 解决Ubuntu16.04没声音
  • 12.14每日一题(备战蓝桥杯归并排序)
  • 面试__Java常见异常有哪些?
  • linux 网络子系统 摘要
  • java发起http、https请求,并携带cookie、header,post参数放body并可选关闭ssl证书验证,高可用版
  • windows系统nodeJs报错node-sass npm ERR! command failed
  • 从零构建属于自己的GPT系列5:模型部署1(文本生成函数解读、模型本地化部署、文本生成文本网页展示、代码逐行解读)
  • 电脑篇——360浏览器打开新标签页自定义,和关闭360导航(强迫症福音)
  • 常见的Linux基本指令
  • ESXI 6.7升级update3
  • bugku--source
  • SpringBoot Maven 项目打包的艺术--主清单属性缺失与NoClassDefFoundError的优雅解决方案
  • 2023-12-14 二叉树的最大深度和二叉树的最小深度以及完全二叉树的节点个数
  • 利用闭包与高阶函数实现缓存函数的创建
  • P1042 [NOIP2003 普及组] 乒乓球 JAVA 题解
  • 最大公因数,最小公倍数详解
  • 无脑利用API实现文心一言AI对话功能?(附代码)
  • 加速数据采集:用OkHttp和Kotlin构建Amazon图片爬虫
  • lua安装
  • 博士毕业需要发表几篇cssci论文
  • UDP报文格式详解
  • Python自动化测试如何自动生成测试用例?
  • 椋鸟C语言笔记#27:字符串数字提取(atoi、atol、atoll、atof)
  • Git 命令使用总结
  • Linux常见面试题30题详细答案解析(二)
  • Linux查询指定时间点段日志Linux查询指定文件
  • 2023年华为HCIA认证H12-811题库讲解
  • MacOS上配置Jenkins开机自启动
  • 指针相关知识(入门)
  • 我的NPI项目之Android 安全系列 -- Android Strongbox 初识