【问题标题】:API always returns 200 with no data in the responseAPI 总是返回 200,响应中没有数据
【发布时间】:2021-04-30 07:27:33
【问题描述】:

我正在尝试向 api.postcodes.io/postcodes/:postcode/validate 发出请求,以检查我输入的邮政编码是否有效。如果我通过网站执行此操作,当我输入有效的邮政编码和状态:200 时,我会收到 200 响应和布尔结果设置为 true,当我输入随机数时,结果: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() 解析响应。之前失败的原因是我的请求网址缺少“https://”部分。

【问题讨论】:

  • 代码中您要验证的值在哪里?它已经是requestURL 的一部分了吗?
  • 我在新编辑中添加了它。

标签: javascript api


【解决方案1】:

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

{
  "status": 200,
  "result": true
}

否则他们会返回 "result": false。

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

【讨论】:

  • 是的,我刚刚注意到这一点,将重新提出我的问题,因为我没有收到任何结果
  • 他正在查看获取请求的状态代码,而不是正文。
【解决方案2】:

尝试更改此行

if(response.status === 200){

到这里

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

【讨论】:

  • 我认为 response.result 不可用这种方式。它需要 JSONize。
【解决方案3】:

这个请求中有两个状态,我想你有点困惑。

第一个状态来自获取请求。 其次是来自响应体。

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

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
  }
}

【讨论】:

    猜你喜欢
    • 2022-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-24
    相关资源
    最近更新 更多