使用劳工统计局提供的示例Python代码,我能够成功访问其API,并在控制台中打印包含数据系列的JSON。下面的Python代码:
#BLS query.
headers = {'Content-type': 'application/json'}
data = json.dumps({"seriesid": ['CES0000000001'],"startyear":"2010", "endyear":"2019"})
result = requests.post('https://api.bls.gov/publicAPI/v2/timeseries/data/', data=data, headers=headers)
print(result.text)
虽然Python代码可以正常工作,但是我更喜欢使用JS,但这样做没有成功。我尝试使用访存,但未取得任何进展。请参见下面的JS代码:
fetch('https://api.bls.gov/publicAPI/v2/timeseries/data/', {
method: 'POST',
headers: {
'Content-type': 'application/json'
},
body: JSON.stringify({seriesid: ['CES0000000001'], startyear:"2010", endyear:"2019"})
})
.then(function(response) {response.json()})
.then(function(json) {console.log(json)});
我确定我在这里弄乱了一些简单的东西,但是我很茫然。任何帮助将不胜感激。作为参考,可以在以下链接中找到BLS有关其API的其他信息:
答案 0 :(得分:0)
如果要在Node.js中使用常规JavaScript的提取功能,将无法正常工作,其原因之一是,NodeJ不能通过浏览器发出请求,但是Fetch API是通过浏览器发出请求的
您必须使用名为node-fetch
的程序包,就像常规提取一样,但是对于NodeJ。
您可以在这里获得它-> https://www.npmjs.com/package/node-fetch
或者您也可以使用标准的NodeJS HTTP
包。
或axios
或request
之类的程序包在NodeJS中发出HTTP请求
答案 1 :(得分:0)
尝试使用
const data = {用户名:'example'};
fetch('https://api.bls.gov/publicAPI/v2/timeseries/data', {
method: 'POST', // or 'PUT'
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(data),
})
.then((response) => response.json())
.then((data) => {
console.log('Success:', data);
})
.catch((error) => {
console.error('Error:', error);
});
但是我认为真正的问题可能是您正在使用已使用身份验证的API,因此请确保您将api密钥与post req本身一起使用。
如果您可以获取api文档,请参考该文档并查看如何向服务器发出经过身份验证的请求。