http:如何从批处理响应中获取 json?
http: how to get json from batch response?
如何从批量请求中获取 json?
如果我 console.log 我的 fetch response.json()
:
我收到以下错误
Uncaught (in promise) SyntaxError: Unexpected number in JSON at position 3
如果我深入研究网络资源以查看 devTools 中的响应 (by the way it has status 200)
,我会看到以下行产生错误:
--batch_SuWHKrAohxj1o_r1qo6yzaAu-gfaqQ1p <-- producing error. Red lines underneath.
Content-Type: application/http
Content-ID: response-
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Vary: Origin
Vary: X-Origin
Vary: Referer
{
..........
..........
.........
}
我的 fetch()
电话有以下 headers:
headers.append('Authorization', `Bearer ${token}`);
headers.append('Host', 'www.googleapis.com');
headers.append('Content-Type', 'multipart/mixed; boundary="deel_foo"');
headers.append('Accept-Encoding', 'gzip');
headers.append('Accept', 'application/json');
fetch(.....).then(response) => response.json())
body 中的每个批处理请求都有 Content-Type: application/json
编辑:
我想要以下回复。
// stripped off the following:
--batch_K_aZ7aQTR91ApoeMUayvTEJhZBs6PW9n
Content-Type: application/http
Content-ID: response-
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Vary: Origin
Vary: X-Origin
Vary: Referer
// stripped off till here.
{ // I want this part, as it's valid JSON.
"id": "17vegjeogjeogje44",
"threadId": "17vjorgjerogjerogjer",
"labelIds": [
"CATEGORY_UPDATES",
"INBOX"
],
"snippet": "Don't miss this idea and many more. Stash what matters to you and inspire others. \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c",
"payload": {
"partId": "",
"mimeType": "text/html",
"filename": "",
"headers": [
........
etc
........
etc........
}
如果其他人遇到同样的问题:
我认为包含 JSON 的正文会有奇异反应。从技术上讲,有一个单一的响应,但它被格式化为多个响应。
多部分响应实际上包含多个 http 响应,每个响应都有一个 header
和分隔符 --[foobar]
。它们并没有全部连接在包含主体内,需要通过应用 string/array 方法或使用库手动将其转换为可用数据。
没有内置解决方案,相当于 response=>response.json()
。
如何从批量请求中获取 json?
如果我 console.log 我的 fetch response.json()
:
Uncaught (in promise) SyntaxError: Unexpected number in JSON at position 3
如果我深入研究网络资源以查看 devTools 中的响应 (by the way it has status 200)
,我会看到以下行产生错误:
--batch_SuWHKrAohxj1o_r1qo6yzaAu-gfaqQ1p <-- producing error. Red lines underneath.
Content-Type: application/http
Content-ID: response-
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Vary: Origin
Vary: X-Origin
Vary: Referer
{
..........
..........
.........
}
我的 fetch()
电话有以下 headers:
headers.append('Authorization', `Bearer ${token}`);
headers.append('Host', 'www.googleapis.com');
headers.append('Content-Type', 'multipart/mixed; boundary="deel_foo"');
headers.append('Accept-Encoding', 'gzip');
headers.append('Accept', 'application/json');
fetch(.....).then(response) => response.json())
body 中的每个批处理请求都有 Content-Type: application/json
编辑:
我想要以下回复。
// stripped off the following:
--batch_K_aZ7aQTR91ApoeMUayvTEJhZBs6PW9n
Content-Type: application/http
Content-ID: response-
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Vary: Origin
Vary: X-Origin
Vary: Referer
// stripped off till here.
{ // I want this part, as it's valid JSON.
"id": "17vegjeogjeogje44",
"threadId": "17vjorgjerogjerogjer",
"labelIds": [
"CATEGORY_UPDATES",
"INBOX"
],
"snippet": "Don't miss this idea and many more. Stash what matters to you and inspire others. \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c \u200c",
"payload": {
"partId": "",
"mimeType": "text/html",
"filename": "",
"headers": [
........
etc
........
etc........
}
如果其他人遇到同样的问题:
我认为包含 JSON 的正文会有奇异反应。从技术上讲,有一个单一的响应,但它被格式化为多个响应。
多部分响应实际上包含多个 http 响应,每个响应都有一个 header
和分隔符 --[foobar]
。它们并没有全部连接在包含主体内,需要通过应用 string/array 方法或使用库手动将其转换为可用数据。
没有内置解决方案,相当于 response=>response.json()
。