我想从data.gov.in中获取所有API数据,因为它仅获取10个数据

时间:2019-01-31 09:51:21

标签: php node.js api

我正在通过以下链接使用data.gov.in数据集API, https://api.data.gov.in/resource/9ef84268-d588-465a-a308-a864a43d0070?api-key=579b464db66ec23bdd000001cdd3946e44ce4aad7209ff7b23ac571b&format=json&offset=0

此链接仅提取10条记录,我试图在该链接的末尾添加一个limit参数,但仍未显示所有记录。

3 个答案:

答案 0 :(得分:1)

您正在使用示例api密钥。使用您的电子邮件和电话号码注册并获取您的api密钥。您可以获得想要的结果。

答案 1 :(得分:0)

您将需要重复调​​用该函数,每次都指定一个新的偏移量。看起来这个特定的API最多只会返回10条记录。

例如,如果您尝试将limit参数设置为5,则可以使用,但如果设置为10或更大,则只会获得10条记录。

例如

https://api.data.gov.in/resource/386ce542-8e39-4c4c-98e0-ddc28c2b5c56?api-key=579b464db66ec23bdd000001cdd3946e44ce4aad7209ff7b23ac571b&format=json&offset=1&limit=5

如果您反复调用该API,每次增加偏移量(例如+1),则一次可获得10条记录的列表。

例如

function getData(offset,limit) {

    fetch('https://api.data.gov.in/resource/386ce542-8e39-4c4c-98e0-ddc28c2b5c56?api-key=579b464db66ec23bdd000001cdd3946e44ce4aad7209ff7b23ac571b&format=json&offset=' + offset + '&limit=' + limit).then(response => {
         return response.json();
    }).then(json => {
       console.log(`Data length from offset #${offset}: `, JSON.stringify(json).length);
    });
}

// Call for a few offsets.
let offsets = [0,1,2,3,4];

offsets.forEach(offset => getData(offset, 10));

答案 2 :(得分:0)

如果您使用的是python,那么这是另一段代码,其概念是首先获取运行此代码时API密钥返回自身的数据计数 注意:使用您自己的API密钥,可以通过注册到data.gov.in并将其替换为<您的API密钥此处>

 import requests
 response = requests.get('https://api.data.gov.in/resource/3b01bcb8-0b14-4abf-b6f2-c1bfd384ba69?api-key=< YOUR API KEY HERE >&format=json&limit=1')
 data = eval(response.text)
 total_count = eval(response.text)['total']

然后在新的响应中再次将total_count作为变量传递:

new_response = requests.get('https://api.data.gov.in/resource/3b01bcb8-0b14-4abf-b6f2-c1bfd384ba69?api-key=< YOUR API KEY HERE >&format=json&limit=%s'%total_count)

new_data = eval(new_response.text)
print (len(new_data['records']))
print (new_data['total'])