【问题标题】:Using a POST request to obtain a authorization token and then using POST response in a GET request使用 POST 请求获取授权令牌,然后在 GET 请求中使用 POST 响应
【发布时间】:2018-12-05 20:37:29
【问题描述】:

使用 POST 方法请求了一个 spotify 访问代码。为响应分配了一个变量。然后,尝试使用 GET 方法直接访问令牌。

   {
        angular.module('app')
            .controller('GameController', function($http){
                const $ctrl = this;

                $http.post('/access-token').then(function(response){
                    $ctrl.tokenResponse = response.data;
                    $ctrl.myToken = $ctrl.tokenResponse.access_token;
                    console.log(response);

                });

                   $http({
                    url: 'https://api.spotify.com/v1/tracks?ids=6rqhFgbbKwnb9MLmUQDhG6',
                    method: 'GET',
                    data: {
                        'Authorization': `Bearer ${$ctrl.myToken}`
                    }
                }).then(function(response){
                    console.log(response.data);
                    $ctrl.tracks = response.data;
                    console.log($ctrl.tracks);
                })

        });
    };

看起来 GET 方法无法识别我的 POST 方法中的变量。我的 ${$ctrl.myToken} 即将出现未定义。 “数据”:{“授权”:“承载未定义”}。但是,当我在我的 GET 方法之前 console.log POST 结果时,它会很好地记录访问代码。

不确定如何让我的 GET 方法从我的 POST 方法中读取响应。

所有这些代码都在我的控制器中。

【问题讨论】:

  • 第一个请求完成后才能发出第二个请求
  • 将第二个请求放在第一个的 .then 函数中。否则,第二个请求会在第一个请求完成之前运行(关键字:异步)
  • 我尝试将 get 请求移到 .then 中,但仍然收到“未定义承载”。
  • @charlietfl - 你能详细说明一下吗?我不确定如何定位我的 GET 方法以确保 POST 在运行之前已经完成。
  • 正如其他人在上面评论的那样,您只需将您的 get 请求放在您的 post 请求的 then 函数中。

标签: javascript angularjs api post get


【解决方案1】:

好的。像大家建议的那样尝试过。它现在正在获取我的访问令牌,但没有数据。看起来我现在有一个全新的问题,但至少第一个问题已经解决了。谢谢大家! :)

{
angular.module('app')
    .controller('GameController', function($http){
        const $ctrl = this;

        $http.post('/access-token').then(function(response){
            $ctrl.tokenResponse = response.data;
            $ctrl.myToken = $ctrl.tokenResponse.access_token;

            $http({
                method: 'GET',
                url: 'https://api.spotify.com/v1/tracks?ids=6rqhFgbbKwnb9MLmUQDhG6',
                data: {
                    Authorization: `Bearer ${$ctrl.myToken}`
                }
            }).then(function(response){
                console.log(response.data);
                $ctrl.tracks = response.data;
                console.log($ctrl.tracks);
            })

        });



});

};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-26
    • 1970-01-01
    • 1970-01-01
    • 2016-06-27
    • 1970-01-01
    • 2011-09-18
    • 2022-01-16
    相关资源
    最近更新 更多