SAP UI5 batch 请求的响应解析流程分析

简介: SAP UI5 batch 请求的响应解析流程分析

batch 请求的回复:

使用合适的 handler 解析:

该 handler accept 字段:multipart/mixed

首先根据响应字段,获取 content-type:

content-type 字段,通过;分隔:

media type:multipart/mixed


返回一个 JSON 对象,包含 mediaType 和 boundary 属性:

batch 请求的处理器是 batchParser:

执行下一行 readBatch 方法:


boundary 的一个例子:batchresponse_16aba97e-4311-41a4-8c64-302727d1d02e

readBatch 的具体处理逻辑还是,基于字符串匹配,即使用 indexOf 查找 boundary 字符串:


readline 的实现就是读取单行:

batch 第一个 part 的头部字段被读取了出来:

media type 必须和硬编码的值一致:application/http


batch 包含的第一个请求 count 的数据已经读取成功了:

已经读取成功了,还要 dispatch:

count 的 media-type 是 text/plain:


return false 了,response 的 body 有值,data 为 undefined:

有4个可用的 handler:


text/plain 负责读取 response.body.

textParser 的逻辑最简单,直接返回 body 字段给 response.data:

读取第二个 part:


这个 part 的 content-type 为 json,因此使用 json handler:

if (handlerAccepts(handler, cType)) {
            var readContext = createReadWriteContext(cType, version, context, handler);
            readContext.response = response;
            response.data = parseCallback(handler, body, readContext);
            return response.data !== undefined;
        }

上述代码的语义是,只有当一个 handler 通过了函数 handlerAccepts 的过滤之后,才能调用 parseCallback,将解析的结果,传递给 response.data.


json handler 使用 JSON.parse 原生 API 进行 json 数据的序列化操作。

序列化成功的 json 数据:

最后返回的 response 是一个数组:


调用最外层的 success handler:

batch 请求的回调函数,在函数 _submitBatchRequest 内部:


相关文章
|
1天前
|
缓存 负载均衡 网络协议
【亮剑】一次完整的 HTTP 请求过程,包括 DNS 解析、TCP 握手、HTTP 请求和响应等环节
【4月更文挑战第30天】本文介绍了HTTP请求的重要性和详细过程。首先,DNS解析将域名转换为IP地址,通过递归和迭代查询找到目标服务器。接着,TCP三次握手建立连接。然后,客户端发送HTTP请求,服务器处理请求并返回响应。最后,理解这个过程有助于优化网站性能,如使用DNS缓存、HTTP/2、Keep-Alive、CDN和负载均衡等实践建议。
|
3天前
|
前端开发 API UED
AngularJS的$http服务:深入解析与进行HTTP请求的技术实践
【4月更文挑战第28天】AngularJS的$http服务是核心组件,用于发起HTTP请求与服务器通信。$http服务简化了通信过程,通过深入理解和实践,能构建高效、可靠的前端应用。
|
9天前
|
Web App开发 前端开发 Java
SpringBoot之请求的详细解析
SpringBoot之请求的详细解析
22 0
|
9天前
|
存储 缓存 Java
SpringBootWeb请求响应之前言及状态码的详细解析
SpringBootWeb请求响应之前言及状态码的详细解析
11 0
|
2月前
|
前端开发 搜索推荐 开发者
SAP UI5 sap.m.Column 控件的 minScreenWidth 属性介绍
SAP UI5 sap.m.Column 控件的 minScreenWidth 属性介绍
29 0
|
2月前
|
JavaScript 前端开发 开发者
SAP UI5 控件 sap.m.ListBase 的 inset 属性的作用介绍
SAP UI5 控件 sap.m.ListBase 的 inset 属性的作用介绍
17 0
|
2月前
|
前端开发 JavaScript API
SAP UI5 sap.ui.require.toUrl 的作用介绍
SAP UI5 sap.ui.require.toUrl 的作用介绍
33 0
|
2月前
|
JSON 前端开发 测试技术
SAP UI5 sap.ui.core.util.MockServer.simulate 方法介绍
SAP UI5 sap.ui.core.util.MockServer.simulate 方法介绍
21 0
|
2月前
使用 SAP UI5 Event Bus 机制,修复 SAP UI5 分页显示数据的一个 bug 试读版
使用 SAP UI5 Event Bus 机制,修复 SAP UI5 分页显示数据的一个 bug 试读版
20 0
|
4月前
|
缓存 JavaScript 前端开发
如何理解 SAP UI5 的 sap.ui.define 函数?
如何理解 SAP UI5 的 sap.ui.define 函数?
50 0

推荐镜像

更多