2016-10-17 3 views
1

У меня проблема с вызовом API SoundCloud: для одного и того же вызова API с того же сервера у меня возникают разные результаты между выполнением запроса CURL и NodeJs. Следующие два вызова были сделаны в течение 2 секунд друг от друга.SoundCloud API: тот же вызов, различный отклик между curl и NodeJS

вызовов с нашего сервера "SiaMusic": curl http://api.soundcloud.com/users/3789802?client_id=MY_CLIENT_ID

Ответ: {"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}

Вызов из NodeJs с помощью модуля "запрос":

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 }}

Как вы можете видеть из JSON, что «followers_count» сильно отличается и также (для вызовов NodeJs), что Я получаю те же результаты через 5-30 дней. Является ли API, обслуживаемый CDN?

+0

Попробуйте удалить "json: true" из объекта options. (это просто мое любопытство) –

+0

Вау, это странно! с json: true == 136692, без json = 137426, из браузера (пустой кеш) = 137277 (вчерашний же результат). теперь .. Какой из них будет правильным? Считаете ли вы, что опция json возвращает чистые результаты? –

+1

Возможно. Добавьте 'Cache-Control': заголовок «no-cache» или добавьте параметр timestamp в url –

ответ

0

Как сказано в комментариях к моему первоначальному вопросу, проблема решена путем добавления поля метки времени в QueryString вызова API. Таким образом, запрос всегда будет отличаться, и вы всегда получите самое последнее значение.

Спасибо @JacopoBrovida за советы!

Смежные вопросы