无法使用 ngResource 检索 JSON

Cannot retrieve JSON, using ngResource

我正在尝试从 URL 中检索一些 JSON,但我一无所获。这是我正在尝试构建的小型足球应用程序(可能供个人使用),主要是为了更好地使用 Angular 1,(在使用 Angular 2 之前)。

http://api.football-data.org/code_samples

如您所见,没有我可以使用的 Angular JS 示例,我正在仔细尝试复制 javascript 示例。

http://api.football-data.org/v1/competitions/424

这是我试图通过 ngResource 方式显示的数据。我遵循了 Udemy 教程,如果可能的话,我希望有人用这种方式做一个例子。 P.S。 API 密钥免费 (http://api.football-data.org/client/register)!只需发送电子邮件,您将立即收到回复!

如果有人可以帮我解决这个问题。非常感谢。

谢谢

HTML

<!DOCTYPE html>
    <html lang="en-gb" ng-app="quickEleven">
        <head>
            <title>AngularJS Football Stats</title>
            <meta http-equiv="X-UA-Compatible" content="IE=Edge">
            <meta charset="UTF-8">

            <!-- load bootstrap and fontawesome via CDN -->
            <link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" />
            <style>
                html, body, input, select, textarea
                {
                    font-size: 1.05em !important;
                }
            </style>

            <!-- load angular via CDN -->
            <script src="//code.angularjs.org/1.3.0-rc.2/angular.min.js"></script>
            <script src="//code.angularjs.org/1.3.0-rc.2/angular-route.min.js"></script>
            <script src="//code.angularjs.org/1.3.0-rc.2/angular-resource.min.js"></script>
            <script src="app.js"></script>
        </head>
        <body>

            <header>
                <nav class="navbar navbar-default">
                <div class="container">
                    <div class="navbar-header">
                        <a class="navbar-brand" href="/">AngularJS Football</a>
                    </div>

                    <ul class="nav navbar-nav navbar-right">
                        <li><a href="#"><i class="fa fa-home"></i> Home</a></li>
                    </ul>
                </div>
                </nav>
            </header>

            <div class="container">

                <div ng-controller="homeController"></div>

            </div>

        </body>
    </html>

JS

// MODULE
var quickEleven = angular.module('quickEleven', ['ngRoute', 'ngResource']);

// CONTROLLERS
quickEleven.controller('homeController', ['$scope', '$resource', 'cityService', function($scope, $resource, cityService) {
    $scope.footballAPI = 
        $resource("http://api.football-data.org/v1/competitions/424", {headers: {"X-Auth-Token": "<API TOKEN KEY>"}}, { get: { method: "JSONP"}
        });

    $scope.fussball = $scope.footballAPI.get({});

    console.log($scope.fussball);
}]);

花点时间阅读有关 $resource 的内容,您犯了一些错误,例如设置 header.

USAGE:
$resource(url, [paramDefaults], [actions], options);

paramDefaults: Default values for url parameters.

因此,使用您定义的资源,令牌不会转到 header,而是作为参数,而 API 将 return 一个 404。您应该设置 headers每个方法:

而且你不需要使用 jsonp,get 就可以了

例如:

$resource("http://api.football-data.org/v1/competitions/:competitionId", {}, {    
  get: {
    method: "GET",
    headers: {
      "X-Auth-Token": "<API TOKEN KEY>"
    }
  }
});

调用方法:

"class" actions without a body: Resource.action([parameters], [success], [error]) "class" actions with a body: Resource.action([parameters], postData, [success], [error])

因此为比赛 ID 424 调用 get 是:

  $scope.footballAPI.get({
    competitionId: 424
  }, function(data) {
    $scope.fussball = data;       
  }, function(err) {
    console.log('error:', err);
  });