JavaScript中SC.get的created_at搜索过滤器失效问题咨询
解决SoundCloud API中created_at过滤器被忽略的问题
看起来你遇到的问题大概率是参数格式传递不正确导致的,SoundCloud的API对created_at过滤参数的格式和传递方式有特定要求,我来帮你梳理下修复方案:
1. 修正日期格式
SoundCloud API要求日期参数必须是ISO 8601标准格式,也就是带T分隔符和时区标识Z的格式,而不是你用的空格分隔格式。比如应该写成:
var qcreated = '2018-01-01T00:00:00Z';
2. 调整参数传递方式
SoundCloud的API期望查询参数以created_at[from]或created_at[to]的形式存在,但JavaScript客户端的SC.get方法可能不会自动将嵌套对象(比如你写的created_at: { from: qcreated })转换成这种格式。你需要直接使用扁平化的键名来传递参数:
修正后的测试代码
var qcreated = '2018-01-01T00:00:00Z'; SC.get('/tracks', { 'created_at[from]': qcreated }, function(tracks) { // 你的结果处理代码 });
如果需要同时使用from和to过滤,就写成:
var fromDate = '2018-01-01T00:00:00Z'; var toDate = '2018-12-31T23:59:59Z'; SC.get('/tracks', { 'created_at[from]': fromDate, 'created_at[to]': toDate }, function(tracks) { // 你的结果处理代码 });
3. 验证请求是否正确发送
你可以打开浏览器的开发者工具(Network面板),查看发送给SoundCloud的请求URL,确认created_at[from]参数是否已经正确出现在查询字符串中。如果参数存在且格式正确,服务器就应该能正确解析并应用日期过滤。
4. CURL测试参考
如果你想用CURL验证,对应的命令应该是(记得替换成你的客户端ID):
curl "https://api.soundcloud.com/tracks?created_at[from]=2018-01-01T00:00:00Z&client_id=YOUR_CLIENT_ID"
按照这个方式调整后,created_at过滤器应该就能正常工作了。
内容的提问来源于stack exchange,提问作者user3777885
相关产品推荐
相关产品推荐

