我正在尝试向api.postcodes.io/postcodes/:postcode/validate,发出请求,以检查我输入的邮政编码是否有效。如果我通过网站这样做,当我输入一个有效的邮政编码时,我得到一个200响应和一个布尔值结果集为true,当我输入一个随机数字时,我得到一个状态: 200,结果: false。然而,当我试图通过我的代码来做这件事时,我没有得到任何结果。可能的问题是什么?我试图使用.json()解析结果,但这只是给了我一个错误。
这是我的请求:
const requestURL = 'https://api.postcodes.io/postcodes/' + addedPostcode + '/validate';
try {
console.log("enters try");
const response = yield fetch(requestURL, {
method: 'GET',
});
if(response.status === 200){
console.log("enters 200");
yield put({type: 'SHOW_ALERT', payload: {alertType: 'success', alertMessage: 'POST CODE VALID'}});
const updatedUser = yield response;
console.log(updatedUser);
} else{
console.log("enters 400");
const description = 'POST CODE INVALID';
yield put({type: 'SHOW_MODAL', payload: {type:'error', description}});
return;
}
} catch (e) {
console.log(e);
}
解决方案:需要使用.json()解析响应。之前失败的原因是因为我的请求url缺少'https://‘’部分。
发布于 2021-01-26 21:59:09
我认为它们总是返回200状态。但是如果你输入一个有效的英国邮政编码,他们会返回
{
"status": 200,
"result": true
}
否则返回"result":false。
我已经使用以下请求url对其进行了测试:api.postcodes.io/postcodes/SO152GB/validate
发布于 2021-01-26 22:02:40
尝试更改此行
if(response.status === 200){
到这个
if(response.result && response.result === true){
发布于 2021-01-26 22:15:08
此请求中有两种状态,我认为您有点困惑。
第一个状态来自fetch请求。二是来自响应体。
您可以通过以下方式检查这些状态:
const requestURL = 'https://api.postcodes.io/postcodes/SO152GB/validate';
const response = await fetch(requestURL, {
method: 'GET',
});
if(response.status === 200) {
// you can access to body with this way.
const body = await response.json();
if(body.status === 200) {
// your business
}
}
https://stackoverflow.com/questions/65902597
复制相似问题