2016-10-17 8 views
1

SoundCloud API를 호출하는 데 문제가 있습니다. 동일한 서버에서 동일한 API 호출에 대해 CURL 요청과 NodeJs간에 다른 결과가 나타납니다. 다음과 같은 두 번의 호출이 서로 2 초 이내에 이루어졌습니다. curl http://api.soundcloud.com/users/3789802?client_id=MY_CLIENT_IDSoundCloud API : 동일한 호출, 컬과 NodeJS 간의 다른 응답

응답 : NodeJs에서 {"id":3789802,"kind":"user","permalink":"siamusic","username":"SiaMusic","last_modified":"2016/03/27 21:00:51 +0000","uri":"https://api.soundcloud.com/users/3789802","permalink_url":"http://soundcloud.com/siamusic","avatar_url":"https://i1.sndcdn.com/avatars-000073011508-o3ui3y-large.jpg","country":null,"first_name":"","last_name":"","full_name":"","description":"","city":"","discogs_name":null,"myspace_name":null,"website":"http://siamusic.net/","website_title":"","track_count":204,"playlist_count":23,"online":false,"plan":"Pro Plus","public_favorites_count":1,"subscriptions":[{"product":{"id":"creator-pro-unlimited","name":"Pro Unlimited"}}],"followers_count":137277,"followings_count":0}

전화 사용 "요청"모듈 :

var options = { 
    method: 'GET', 
    url: 'http://api.soundcloud.com/users/3789802', 
    qs: {client_id: 'MY_CLIENT_ID' }, 
    json: true 
}; 
request(options, function(err, response, body) { 
    //handle error, if body 
    console.log(body); 
} 

응답 : 몸 : { id: 3789802, kind: 'user', permalink: 'siamusic', username: 'SiaMusic', last_modified: '2016/03/27 21:00:51 +0000', uri: 'https://api.soundcloud.com/users/3789802', permalink_url: 'http://soundcloud.com/siamusic', avatar_url: 'https://i1.sndcdn.com/avatars-000073011508-o3ui3y-large.jpg', country: null, first_name: '', last_name: '', full_name: '', description: '', city: '', discogs_name: null, myspace_name: null, website: 'http://siamusic.net/', website_title: '', track_count: 204, playlist_count: 23, online: false, plan: 'Pro Plus', public_favorites_count: 1, subscriptions: [ [Object] ], followers_count: 136692, followings_count: 0 }}

으로 우리의 서버 "SiaMusic"에서

전화 JSON에서 "followers_count"가 많이 다르고 또한 (NodeJs 호출의 경우) 발생하는 것을 볼 수 있습니다. 나는 5 일에서 30 일 사이에 같은 결과를 얻는다. API가 CDN에서 제공합니까?

+0

옵션 개체에서 "json : true"를 삭제하십시오. (그게 내 호기심이야) –

+0

와우, 이상 하네! json : true == 136692, json = 137426 없음, 브라우저에서 (빈 캐시) = 137277 (어제 같은 결과). 지금 ... 어느 것이 올바른 것입니까? json 옵션이 임시 결과를 반환한다고 생각합니까? –

+1

이 가능합니다. 'Cache-Control'을 추가하십시오 : 'no-cache'header 또는 url에 timestamp 매개 변수를 추가하십시오. –

답변

0

원래 질문에 대한 의견에서 API 호출의 QueryString에 타임 스탬프 필드를 추가하여 문제가 해결되었습니다. 그렇게하면 요청이 항상 달라 지므로 항상 최신 값을 얻을 수 있습니다.

팁 덕분에 @JacopoBrovida!