Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript API总是返回200,响应中没有数据_Javascript_Api - Fatal编程技术网

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

Javascript API总是返回200,响应中没有数据,javascript,api,Javascript,Api,我正在尝试向api.postcodes.io/postcodes/:postcode/validate发出请求,以检查我输入的邮政编码是否有效。如果我通过网站这样做,当我输入一个有效的邮政编码和状态:200时,我得到一个200响应,布尔结果设置为true,当我输入一个随机数时,结果设置为false。然而,当试图通过我的代码实现这一点时,我没有得到任何结果。有什么问题吗?我尝试使用.json()解析结果,但这只是给了我一个错误 这是我的要求: const requestURL = 'https:/

我正在尝试向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()解析响应。它以前失败的原因是因为我的请求url缺少“https://”部分。

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

{
  "status": 200,
  "result": true
}
否则返回“result”:false

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

尝试更改此行

if(response.status==200){

对此


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

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

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

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

const requestURL='1〕https://api.postcodes.io/postcodes/SO152GB/validate';
const response=等待获取(requestURL{
方法:“GET”,
});
如果(response.status==200){
//你可以通过这种方式进入身体。
const body=wait response.json();
如果(body.status==200){
//你的生意
}
}

您试图验证的值在代码中的什么位置?它是否已经是
requestURL
的一部分?我在新编辑中添加了它。是的,我刚刚注意到这一点,将重新购买我的问题,因为我没有收到任何结果。获取请求的状态代码,而不是在正文中。我认为response.result以这种方式不可用。需要JSO使变为中性。