我正在尝试使用fetch
从API获取一些数据,并且控制台日志显示[]
,但是,当我使用Postman进行相同的请求时,它成功返回了JSON。我在做什么错了?
let fetch = require("node-fetch");
const url_deals = 'http://www.cheapshark.com/api/1.0/deals';
function getDealInfo(dealID){
let new_url = new URL(url_deals + "?id=" + dealID);
fetch(new_url, {method : 'GET'})
.then(data =>{
data.json().then(out => {
console.log(out);
})
})
}
getDealInfo("X8sebHhbc1Ga0dTkgg59WgyM506af9oNZZJLU9uSrX8%253D");
答案 0 :(得分:1)
您的ID显然被多次编码。如果我解码两次,我会得到:
<div class="block" data-hover-bg="#a30003">
<div>
并且,实际上是获取此数据。
$( ".block" ).mouseenter(function() {
this.style.backgroundColor = this.dataset.hoverBg;
});
如此看来,您传递的ID值似乎不正确。您可以通过将getDealInfo("X8sebHhbc1Ga0dTkgg59WgyM506af9oNZZJLU9uSrX8=");
代码与基本URL { gameInfo:
{ storeID: '1',
gameID: '93503',
name: 'BioShock Infinite',
steamAppID: '8870',
salePrice: '29.99',
retailPrice: '29.99',
steamRatingText: 'Overwhelmingly Positive',
steamRatingPercent: '95',
steamRatingCount: '61901',
metacriticScore: '94',
metacriticLink: '/game/pc/bioshock-infinite',
releaseDate: 1364169600,
publisher: 'N/A',
steamworks: '1',
thumb:
'https://steamcdn-a.akamaihd.net/steam/apps/8870/capsule_sm_120.jpg?t=1568739647' },
cheaperStores:
[ { dealID: 'fq0cNHiR3Z4TpZyV7WH865C1%2BCBlmufYUc%2Bu2HqyUHE%3D',
storeID: '27',
salePrice: '26.99',
retailPrice: '29.99' } ],
cheapestPrice: { price: '5.27', date: 1543553226 } }
一起使用来正常工作,这将返回JSON,确认node-fetch()
代码工作正常,并且问题出在与您的http://www.cheapshark.com/api/1.0/deals
值相同。
答案 1 :(得分:0)
问题出在您的身份证上。您已经逃脱了两次。
getDealInfo("X8sebHhbc1Ga0dTkgg59WgyM506af9oNZZJLU9uSrX8%253D");
您代码中的 Id为X8sebHhbc1Ga0dTkgg59WgyM506af9oNZZJLU9uSrX8%253D
,但在屏幕截图中为X8sebHhbc1Ga0dTkgg59WgyM506af9oNZZJLU9uSrX8%3D
。请看倒数第三位。
答案 2 :(得分:0)
使用该ID我也一无所获。
请注意,如果您不使用Optional.empty()
进行请求,则ID与您的格式不匹配,例如
id
您似乎在某处进行了额外的URI编码。