我有一些端点,它返回没有正文的响应。但是在其他api端点中它返回body,所以我们像这样处理我们的响应:
//...api request
.then((response) => {
return response.json().then((json) => ({ json, response }));
}).then(({ json, response }) => {
if (!response.ok || (typeof(json) === 'boolean' && !json)) {
json.code = response.status;
return Promise.reject(json);
}
if (schema) {
return { json: getNormalizedResponse(json, schema), status: response.status};
}
return { json, status: response.status};
});
因此,当我们尝试解析没有正文的响应时,它总会引发错误。我该怎样处理这个时刻?
UPD:它会引发错误
return response.json().then((json) => ({ json, response }));
的字符串。
答案 0 :(得分:0)
我认为您应该在下面的条件中更改检查顺序。您还应首先检查json
不应是undefined
或null
。
if (!response.ok || (json && typeof(json) === 'boolean')) {
编辑:
您应首先检查response
,然后返回应修改如下:
.then((response) => {
const json = response.json();
return ( json ? response.json().then((json) => ({ json, response })) : '' );
}).then(({ json, response }) => {
if (!response.ok || (typeof(json) === 'boolean' && !json)) {
json.code = response.status;
return Promise.reject(json);
}
if (schema) {
return { json: getNormalizedResponse(json, schema), status: response.status};
}
return { json, status: response.status};
});
我不确定如果response.json
为undefined
,您希望返回什么内容,请根据需要进行修改。