Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS中的$resource web服务连接配置到底意味着什么?_Javascript_Json_Angularjs_Javascript Framework_Angularjs Resource - Fatal编程技术网

Javascript AngularJS中的$resource web服务连接配置到底意味着什么?

Javascript AngularJS中的$resource web服务连接配置到底意味着什么?,javascript,json,angularjs,javascript-framework,angularjs-resource,Javascript,Json,Angularjs,Javascript Framework,Angularjs Resource,我是AngularJS的新手,我正在学习一个教程,展示如何访问这个外部天气预报API:检索和使用天气信息 因此,在我的应用程序中,我有这样一个控制器: weatherApp.controller('forecastController', ['$scope', '$resource', '$routeParams', 'cityService', function($scope, $resource, $routeParams, cityService) { // It contain

我是AngularJS的新手,我正在学习一个教程,展示如何访问这个外部天气预报API:检索和使用天气信息

因此,在我的应用程序中,我有这样一个控制器:

weatherApp.controller('forecastController', ['$scope', '$resource', '$routeParams', 'cityService', function($scope, $resource, $routeParams, cityService) {
    // It contain the city selected in the view:
    $scope.city = cityService.city;

    $scope.days = $routeParams.days || 2;

    $scope.weatherAPI = $resource("http://api.openweathermap.org/data/2.5/forecast/daily", 
                                  { APPID: 'MY_PERSONAL_KEY',
                                   callback: "JSON_CALLBACK",
                                   cnt: 5
                                  }, 


                                  { get: { method: "JSONP" }});

    $scope.weatherResult = $scope.weatherAPI.get({ q: $scope.city, cnt: $scope.days });

    $scope.convertToFahrenheit = function(degK) {

        return Math.round((1.8 * (degK - 273)) + 32);

    }

    $scope.convertToDate = function(dt) { 

        return new Date(dt * 1000);

    };

}]);
我发现在理解服务的确切调用方式和所需信息方面存在一些困难

因此,根据我所了解的情况(但我绝对不确定,因此,如果我做了错误的断言,请纠正我),我有以下情况:

1) 我将Angular提供的$resource服务注入控制器,据我所知,它是一个可以用于用户友好的RESTful web服务交互的对象

因此,通过这一行:

$scope.city = cityService.city;
我将一个城市(由用户在视图中插入)放入此控制器的$scope城市属性中,该城市将作为用户用于webservice查询的参数之一

然后,我在$scope对象上创建weatherAPI属性,我认为它应该表示访问此资源的方式

    $scope.weatherAPI = $resource("http://api.openweathermap.org/data/2.5/forecast/daily", 
                                  { APPID: 'MY_PERSONAL_KEY',
                                   callback: "JSON_CALLBACK"
                                  }, 


                                  { get: { method: "JSONP" }});
因此,我认为weatherAPI是一个资源对象,由$resource服务提供(或者我遗漏了什么?)

在此基础上,我设置了web服务URL()和几个JSON对象,它们是:

{ 
    APPID: 'MY_PERSONAL_KEY',
    callback: "JSON_CALLBACK"
}, 
在其中,我声明了APPID字段,该字段是我使用该键的个人密钥和回调:“JSON\U回调”字段。什么确切地表示这个回调字段

第二个目标是:

{get:{method:“JSONP”}

好的,这两个物体的形状对我来说是相当模糊的

确切的定义是什么?在我看来,这与我的应用程序的安全性有关,但我绝对不确定

最后,它通过以下方式从web服务检索数据:

$scope.weatherResult = $scope.weatherAPI.get({ q: $scope.city, cnt: $scope.days });
我认为我只是在传递2参数(类似于经典HTTPrequest的?q=value&?cnt=value)

所以我认为weatherAPI是一个由$resource服务提供的资源对象(或者我遗漏了什么?)

不,你没有遗漏任何东西
weatherAPI
正是您所认为的

在其中,我声明了APPID字段,它是我的个人密钥,用于使用该密钥和回调:“JSON_callback”字段。什么确切地表示这个回调字段

callback
字段只是在每次请求时传递给API的默认GET参数。它设置在这里,所以您不必每次从API请求内容时都传递它

确切的定义是什么?在我看来,这与我的应用程序的安全性有关,但我绝对不确定

传递到
$resource
调用中的第三个参数是API上可用方法的定义

在外部对象中,键是方法的名称。它只是那个方法可用的名称。值是该方法的设置对象,在这种情况下,它只指定方法的类型,即“JSONP”

JSONP是一种特殊类型的请求,它只能是一个“GET”请求,浏览器不允许在这里“POST”。JSONP必须返回简单的函数调用,向其中传递一个参数JSON和结果数据。此函数将在JavaScript上调用

JSONP只是进行跨站点调用的一种变通方法