我有以下来自mern.io堆栈的函数。
export default function callApi(endpoint, method = 'get', body) {
return fetch(`${API_URL}/${endpoint}`, {
headers: { 'content-type': 'application/json' },
method,
body: JSON.stringify(body),
})
.then(response => response.json().then(json => ({ json, response })))
.then(({ json, response }) => {
if (!response.ok) {
return Promise.reject(json);
}
return json;
})
.then(
response => response,
error => error
);
}
我按以下方式调用该函数
callApi('auth/register', 'post', {
username,
password,
}).then(function(res) {
// do stuff
});
响应将是201或422.如何以正确的方式处理422?如果用户名已存在,则会出现422。
我是否将所有逻辑放在第一个逻辑中,如下所示:
callApi('auth/register', 'post', {
username,
password,
}).then(function(res) {
if (res.error) {
} else {
}
});
答案 0 :(得分:1)
假设callApi返回一个Promise
对象:
callApi('auth/register', 'post', {
username,
password,
}).then(function(res) {
// res
}).catch(function(err) {
// handle err
});
有关详细信息:https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise