【问题标题】:How to dynamically pass a parameter in the get in method?如何在get in方法中动态传递参数?
【发布时间】:2019-05-09 11:48:28
【问题描述】:

在网络选项卡中,我发送查询“https://api.spotify.com/v1/search?limit=14&market=US&offset=5&q=abba&type=track,artist

它不起作用:如何将查询设置为该顺序: https://api.spotify.com/v1/search?q=mmm&type=track%2Cartist&market=US&limit=10&o

'q' 应该在搜索之后?

 getArtists(query) {
   const params = {
        type: 'track,artist',
        market: 'US',
        limit: 14,
        offset: 5
    };

    if (typeof query === 'string') {
        params.q = query;
    }

    console.log(params) 

    return this.$http.get("https://api.spotify.com/v1/search", { 
params }).then(function mySuccess(response) {
        console.log(response.data);
    }, function myError(response) {
        console.log(response);
    });
  };

getArtists('Abba');

【问题讨论】:

  • typeof(query)吗?
  • 参数顺序无关。
  • 为什么不起作用?
  • 我可以在哪里放置令牌认证?有什么简单的方法吗?
  • @PrashantPimpale 没有括号。 typeof 是一个运算符,而不是一个函数。 MDN's docs for typeof

标签: javascript angularjs spotify


【解决方案1】:

我在尝试您的 api 时看到一个授权错误。

{
"error": {
"status": 401,
"message": "No token provided"
}
}

您需要在标头中提供授权令牌来解决此问题。

getArtists(query) {
let params = {
    q: query,
    type: 'track,artist',
    market: 'US',
    limit: 14,
    offset: 5
};

if (typeof query !== 'string') {
    delete params.q;
}

console.log(params) 

return this.$http.get("https://api.spotify.com/v1/search", {headers: {
'Authorization': 'Bearer <AUTHORIZATION TOKEN>}, 
params }).then(function mySuccess(response) {
    console.log(response.data);
}, function myError(response) {
    console.log(response);
});
};

如果您还没有,请在此处查看流程:https://developer.spotify.com/documentation/general/guides/authorization-guide/

【讨论】:

    【解决方案2】:

    试试这个

    getArtists(query) {
       let params = {
            q: query,
            type: 'track,artist',
            market: 'US',
            limit: 14,
            offset: 5
        };
    
        if (typeof query !== 'string') {
            delete params.q;
        }
    
        console.log(params) 
    
        return this.$http.get("https://api.spotify.com/v1/search", { 
    params }).then(function mySuccess(response) {
            console.log(response.data);
        }, function myError(response) {
            console.log(response);
        });
      };
    

    【讨论】:

    • 我生成了 0Auth 令牌,但它不起作用。 "message": "未提供令牌"
    • 尝试使用let 而不是const
    • 与解释代码不同之处和原因的问题相比,由“试试这个”和未注释代码组成的答案更常被否决,而被赞成的次数更少。
    • 同样的问题:“消息”:“未提供令牌”。当我有示例“api.spotify.com/v1/search?q=Muse&type=track%2Cartist”时,它可以工作。但我动态改变了'q'
    猜你喜欢
    • 1970-01-01
    • 2023-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-02
    • 2019-11-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多