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

关于前后端的参数传递

以前端javascript,后端nodejs+express为例,后端可以从前端发来的request里获取这些属性:header、query、url、params、body,其中params和query是从url中解析获得,不过express已帮我们做好了,就不用我们自己再折腾处理url里的这些参数,除了body外,其他位置传递参数的话,后端直接取就可以了,不用再通过解析器来处理,不过由于浏览器对参数长度的限制,参数较多或参数较长的话,就只能通过body来传递参数了,这时候就需要考虑参数的编码和解析了。
html表单提交到后端,form属性里enctype可以指定编码类型,一般传二进制文件或base64编码的图片或数据采用multipart/form-data ,传普通的字段值采用 application/x-www-form-urlencoded ,前后端理解一致不编码直接文本字符串传输可以用text/plain。
后端用对应的解析方法解析即可,比如可以将express.urlencoded({ extended: false })作为对应接口调用的中间件来处理传入的body参数解析。
jquery里的ajax调用,又是怎样的呢?一般我们会将参数放在ajax的data属性的json对象中,每个参数对应json对象的一个属性,get方法时,这些参数会转换成query参数传递到后端,后端直接从req.query中获取即可。post方法的话,这些参数会放在body里传递到后端。注意了,此时有个小坑:如果在ajax调用中,代码这样写的话

    $.ajax({url: './hello1',type: 'post',data: {"hello2":"hello3"},contentType:'application/json'});

那么后端中间件用express.json()的话,会报错,正确的书写方法是:

    $.ajax({url: './hello1',type: 'post',data: JSON.stringify({"hello2":"hello3"}),contentType:'application/json'});

这么难看?还要转字符串?能不能写得简单些呢,是可以的

    $.ajax({url: './hello1',type: 'post',data: {"hello2":"hello3"}});

不过后端就不能用json来解析了,要用express.urlencoded({ extended: false })这个中间件。那不是很好么?前端代码清爽了许多呢。不是这样理解,urlencode编码跟json比起来有一些限制,特别是传递一些带有特殊字符的参数会导致前后端不一致而出现问题,所以我个人是建议最好采用json来传递参数。

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

相关文章:

  • 华火电焰灶,科技打造“新”厨房
  • 普通人副业要趁早,5种靠谱且持久的赚钱副业
  • 【文献解析】3D高斯抛雪球是个什么玩意
  • 嘎嘎好用的虚拟键盘第二弹之中文输入法
  • vue3使用el-autocomplete请求远程数据
  • 【学习笔记】HarmonyOS 4.0 鸿蒙Next 应用开发--安装开发环境
  • 【PHP】计算两个时间戳之间相差的时间
  • Out-of-Distribution Detection with Semantic Mismatch under Masking
  • 嫦娥六号近月制动成功,建立月球基地又迈进一步!
  • 上位机图像处理和嵌入式模块部署(树莓派4b使用lua)
  • 分布式与一致性协议之ZAB协议(五)
  • 计算机毕业设计 | springboot+vue凌云在线阅读平台 线上读书系统(附源码)
  • ICode国际青少年编程竞赛- Python-1级训练场-综合训练1
  • 提示词工程入门-使用文心一言4.0-通义千问-GPT4-Claude3通用提示技巧测试
  • 损失函数详解
  • 算法提高之树的中心
  • 【Java基础】面向对象是什么
  • 家用洗地机应该怎么选?哪个牌子好?市场上主流洗地机品牌推荐
  • python Django REST framework允许你根据API的版本提供不同的行为或数据
  • unity给物体添加可以包裹所有子物体的BoxCollider
  • 2024五一数学建模A题思路代码与论文分析
  • ICode国际青少年编程竞赛- Python-1级训练场-基础训练2
  • 科技控必看!让你轻松成为机器人领域达人
  • Linux进程——Linux下常见的进程状态
  • TCP长连接短链接
  • 代码随想录35期Day33-Java
  • PMP考试没过怎么办?如何补考?(附复核流程)
  • 自主实现Telnet流量抓取
  • 以瓦片地图为底图添加图表,保留拖拽功能
  • Windows cmd bat之特殊符号及变量