SAP UI5 batch 请求的响应解析流程分析
batch 請求的回復(fù):
使用合適的 handler 解析:
該 handler accept 字段:multipart/mixed
首先根據(jù)響應(yīng)字段,獲取 content-type:
content-type 字段,通過;分隔:
media type:multipart/mixed
返回一個(gè) JSON 對象,包含 mediaType 和 boundary 屬性:
batch 請求的處理器是 batchParser:
執(zhí)行下一行 readBatch 方法:
boundary 的一個(gè)例子:batchresponse_16aba97e-4311-41a4-8c64-302727d1d02e
readBatch 的具體處理邏輯還是,基于字符串匹配,即使用 indexOf 查找 boundary 字符串:
readline 的實(shí)現(xiàn)就是讀取單行:
batch 第一個(gè) part 的頭部字段被讀取了出來:
media type 必須和硬編碼的值一致:application/http
batch 包含的第一個(gè)請求 count 的數(shù)據(jù)已經(jīng)讀取成功了:
已經(jīng)讀取成功了,還要 dispatch:
count 的 media-type 是 text/plain:
return false 了,response 的 body 有值,data 為 undefined:
有4個(gè)可用的 handler:
text/plain 負(fù)責(zé)讀取 response.body.
textParser 的邏輯最簡單,直接返回 body 字段給 response.data:
讀取第二個(gè) part:
這個(gè) part 的 content-type 為 json,因此使用 json handler:
上述代碼的語義是,只有當(dāng)一個(gè) handler 通過了函數(shù) handlerAccepts 的過濾之后,才能調(diào)用 parseCallback,將解析的結(jié)果,傳遞給 response.data.
json handler 使用 JSON.parse 原生 API 進(jìn)行 json 數(shù)據(jù)的序列化操作。
序列化成功的 json 數(shù)據(jù):
最后返回的 response 是一個(gè)數(shù)組:
調(diào)用最外層的 success handler:
batch 請求的回調(diào)函數(shù),在函數(shù) _submitBatchRequest 內(nèi)部:
更多Jerry的原創(chuàng)文章,盡在:“汪子熙”:
總結(jié)
以上是生活随笔為你收集整理的SAP UI5 batch 请求的响应解析流程分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java在线工具
- 下一篇: 点、像素、分辨率、PPI、DPI等