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

batch 请求的回复:

SAP UI5 batch 请求的响应解析流程分析_第1张图片

使用合适的 handler 解析:

SAP UI5 batch 请求的响应解析流程分析_第2张图片

该 handler accept 字段:multipart/mixed

SAP UI5 batch 请求的响应解析流程分析_第3张图片

首先根据响应字段,获取 content-type:
SAP UI5 batch 请求的响应解析流程分析_第4张图片

content-type 字段,通过;分隔:
SAP UI5 batch 请求的响应解析流程分析_第5张图片

media type:multipart/mixed
SAP UI5 batch 请求的响应解析流程分析_第6张图片

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

SAP UI5 batch 请求的响应解析流程分析_第7张图片

batch 请求的处理器是 batchParser:

SAP UI5 batch 请求的响应解析流程分析_第8张图片

执行下一行 readBatch 方法:
SAP UI5 batch 请求的响应解析流程分析_第9张图片

boundary 的一个例子:batchresponse_16aba97e-4311-41a4-8c64-302727d1d02e
readBatch 的具体处理逻辑还是,基于字符串匹配,即使用 indexOf 查找 boundary 字符串:

SAP UI5 batch 请求的响应解析流程分析_第10张图片

readline 的实现就是读取单行:
SAP UI5 batch 请求的响应解析流程分析_第11张图片

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

SAP UI5 batch 请求的响应解析流程分析_第12张图片

SAP UI5 batch 请求的响应解析流程分析_第13张图片

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

SAP UI5 batch 请求的响应解析流程分析_第14张图片

SAP UI5 batch 请求的响应解析流程分析_第15张图片

batch 包含的第一个请求 count 的数据已经读取成功了:
SAP UI5 batch 请求的响应解析流程分析_第16张图片

已经读取成功了,还要 dispatch:
SAP UI5 batch 请求的响应解析流程分析_第17张图片

count 的 media-type 是 text/plain:

SAP UI5 batch 请求的响应解析流程分析_第18张图片

return false 了,response 的 body 有值,data 为 undefined:
SAP UI5 batch 请求的响应解析流程分析_第19张图片

有4个可用的 handler:
SAP UI5 batch 请求的响应解析流程分析_第20张图片

text/plain 负责读取 response.body.

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

SAP UI5 batch 请求的响应解析流程分析_第21张图片

读取第二个 part:
SAP UI5 batch 请求的响应解析流程分析_第22张图片

这个 part 的 content-type 为 json,因此使用 json handler:
SAP UI5 batch 请求的响应解析流程分析_第23张图片

SAP UI5 batch 请求的响应解析流程分析_第24张图片

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 数据的序列化操作。

SAP UI5 batch 请求的响应解析流程分析_第25张图片

序列化成功的 json 数据:
SAP UI5 batch 请求的响应解析流程分析_第26张图片

最后返回的 response 是一个数组:
SAP UI5 batch 请求的响应解析流程分析_第27张图片

调用最外层的 success handler:
SAP UI5 batch 请求的响应解析流程分析_第28张图片

batch 请求的回调函数,在函数 _submitBatchRequest 内部:
SAP UI5 batch 请求的响应解析流程分析_第29张图片

更多Jerry的原创文章,尽在:"汪子熙":
SAP UI5 batch 请求的响应解析流程分析_第30张图片

你可能感兴趣的:(SAP UI5 batch 请求的响应解析流程分析)