首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >API总是返回200,响应中没有数据

API总是返回200,响应中没有数据
EN

Stack Overflow用户
提问于 2021-01-26 21:49:44
回答 3查看 105关注 0票数 0

我正在尝试向api.postcodes.io/postcodes/:postcode/validate,发出请求,以检查我输入的邮政编码是否有效。如果我通过网站这样做,当我输入一个有效的邮政编码时,我得到一个200响应和一个布尔值结果集为true,当我输入一个随机数字时,我得到一个状态: 200,结果: false。然而,当我试图通过我的代码来做这件事时,我没有得到任何结果。可能的问题是什么?我试图使用.json()解析结果,但这只是给了我一个错误。

这是我的请求:

代码语言:javascript
运行
复制
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://‘’部分。

EN

回答 3

Stack Overflow用户

发布于 2021-01-26 21:59:09

我认为它们总是返回200状态。但是如果你输入一个有效的英国邮政编码,他们会返回

代码语言:javascript
运行
复制
{
  "status": 200,
  "result": true
}

否则返回"result":false。

我已经使用以下请求url对其进行了测试:api.postcodes.io/postcodes/SO152GB/validate

票数 1
EN

Stack Overflow用户

发布于 2021-01-26 22:02:40

尝试更改此行

if(response.status === 200){

到这个

if(response.result && response.result === true){

票数 0
EN

Stack Overflow用户

发布于 2021-01-26 22:15:08

此请求中有两种状态,我认为您有点困惑。

第一个状态来自fetch请求。二是来自响应体。

您可以通过以下方式检查这些状态:

代码语言:javascript
运行
复制
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
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65902597

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档