关于前后端的参数传递

news/2024/9/25 23:19:58/

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

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

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

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

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

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

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


http://www.ppmy.cn/news/1454676.html

相关文章

图神经网络实战(9)——GraphSAGE详解与实现

图神经网络实战(9)——GraphSAGE详解与实现 0. 前言1. GraphSAGE 原理1.1 邻居采样1.2 聚合 2. 构建 GraphSAGE 模型执行节点分类2.1 数据集分析2.2 构建 GraphSAGE 模型 3. PinSAGE小结系列链接 0. 前言 GraphSAGE 是专为处理大规模图而设计的图神经网…

解决使用git时遇到Failed to connect to github.com port 443 after 21090 ms: Couldn‘t connect to server

先试试你能直接访问GitHub: Let’s build from here GitHub吗? 你是直接就可以访问成功还是挂梯子之后访问成功的呢? 一、如果是在挂着梯子的情况下拉取或者推送代码的时候是否遇到了报错? fatal: unable to access https://github.com/xx…

WWW‘24 | 课程学习CL+模仿学习IL用于ETF及商品期货交易

WWW24 | 课程学习CL模仿学习IL用于ETF及商品期货交易 原创 QuantML QuantML 2024-05-04 13:47 论文地址:[2311.13326] Curriculum Learning and Imitation Learning for Model-free Control on Financial Time-series (arxiv.org) 本文探讨了在金融时间序列数据上…

Bookends for Mac:文献管理工具

Bookends for Mac,一款专为学术、研究和写作领域设计的文献管理工具,以其强大而高效的功能深受用户喜爱。这款软件支持多种文件格式,如PDF、DOC、RTF等,能够自动提取文献的关键信息,如作者、标题、出版社等&#xff0c…

libcity 笔记:支持的模型

1 支持的模型 1.1 traffic_state_pred HA历史平均值,将历史流量建模为季节性过程,然后使用前几个季节的加权平均值作为预测值。VAR向量自回归SVR支持向量回归ARIMAAutoEncoderSeq2Seq采用基于门控循环单元的编码器-解码器框架,进行多步预测…

Python基础学习之logging模块

在Python编程中,日志记录(Logging)是一个非常重要的功能。它不仅可以帮助我们追踪和调试代码中的错误,还可以记录程序运行时的关键信息,以便后续分析和优化。Python标准库中的logging模块为我们提供了强大的日志记录功…

大数据BI可视化(Echarts组件)项目开发-熟悉koa2后端开发6.0

koa2简介 1.基于Node.js平台的web开发框架 2.由Express原班人马打造 Express,koa,koa2 框架名作用异步处理Expressweb框架回调函数koaweb框架Generatoryieldkoa2web框架async/await 3.环境依赖Node.js V7.6.0以上 koa2特点 1.支持async/await 2.…

opencv图片的平移-------c++

图片平移 cv::Mat opencvTool::translateImage(const cv::Mat& img, int dx, int dy) {// 获取图像尺寸int rows img.rows;int cols img.cols;// 定义仿射变换矩阵cv::Mat M (cv::Mat_<float>(2, 3) << 1, 0, dx, 0, 1, dy);// 进行仿射变换cv::Mat dst;cv…