Я новичок в angularJS. Я ищу доступ к службам из RESTful API, но понятия не имел. Как я могу это сделать?
Ответы:
AngularJS предоставляет $http
службу, которая делает именно то, что вы хотите: отправка запросов AJAX к веб-службам и получение данных от них с использованием JSON (что идеально подходит для общения со службами REST).
Приведу пример (взятый из документации AngularJS и немного адаптированный):
$http({ method: 'GET', url: '/foo' }).
success(function (data, status, headers, config) {
// ...
}).
error(function (data, status, headers, config) {
// ...
});
Обратите внимание , что есть еще одна служба в AngularJS, то $resource
служба , которая предоставляет доступ к службам REST в более высоком уровне моды (например , снова взяты из AngularJS документации):
var Users = $resource('/user/:userId', { userId: '@id' });
var user = Users.get({ userId: 123 }, function () {
user.abc = true;
user.$save();
});
Более того, есть и сторонние решения, например Restangular . См. Его документацию о том, как его использовать. По сути, он более декларативный и абстрагирует от вас больше деталей.
$ HTTP сервис может быть использован для общего назначения AJAX. Если у вас есть правильный RESTful API, вам следует взглянуть на ngResource .
Вы также можете взглянуть на Restangular , стороннюю библиотеку для простой обработки REST API.
Добро пожаловать в чудесный мир Angular !!
Я новичок в angularJS. Я ищу доступ к службам из RESTful API, но понятия не имел. пожалуйста, помогите мне это сделать. Спасибо
Есть два (очень больших) препятствия для написания ваших первых сценариев Angular, если вы в настоящее время используете сервисы GET.
Во-первых, ваши сервисы должны реализовывать свойство «Access-Control-Allow-Origin», в противном случае сервисы будут работать нормально при вызове, скажем, из веб-браузера, но с треском провалиться при вызове из Angular.
Итак, вам нужно добавить несколько строк в файл web.config :
<configuration>
...
<system.webServer>
<httpErrors errorMode="Detailed"/>
<validation validateIntegratedModeConfiguration="false"/>
<!-- We need the following 6 lines, to let AngularJS call our REST web services -->
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*"/>
<add name="Access-Control-Allow-Headers" value="Content-Type"/>
</customHeaders>
</httpProtocol>
</system.webServer>
...
</configuration>
Затем вам нужно добавить немного кода в ваш HTML-файл, чтобы Angular вызывал веб-сервисы GET:
// Make sure AngularJS calls our WCF Service as a "GET", rather than as an "OPTION"
var myApp = angular.module('myApp', []);
myApp.config(['$httpProvider', function ($httpProvider) {
$httpProvider.defaults.useXDomain = true;
delete $httpProvider.defaults.headers.common['X-Requested-With'];
}]);
После того, как вы внесете эти исправления, вызов RESTful API станет действительно простым.
function YourAngularController($scope, $http)
{
$http.get('http://www.iNorthwind.com/Service1.svc/getAllCustomers')
.success(function (data) {
//
// Do something with the data !
//
});
}
Вы можете найти действительно четкое пошаговое руководство по этим шагам на этой веб-странице:
Использование Angular с данными JSON
Удачи !
Майк
Access-Control-Allow-Origin
Никогда не должна быть дикими картами , если вы не публичный облицовочный API ...
Просто чтобы расширить $http
(методы быстрого доступа) здесь: http://docs.angularjs.org/api/ng.$http
// Фрагмент со страницы
$http.get('/someUrl').success(successCallback);
$http.post('/someUrl', data).success(successCallback);
// доступные методы быстрого доступа
$http.get
$http.head
$http.post
$http.put
$http.delete
$http.jsonp
Например, ваш json выглядит так: {"id": 1, "content": "Hello, World!"}
Вы можете получить доступ к этому через angularjs так:
angular.module('app', [])
.controller('myApp', function($scope, $http) {
$http.get('http://yourapp/api').
then(function(response) {
$scope.datafromapi = response.data;
});
});
Тогда на вашем html вы сделаете это так:
<!doctype html>
<html ng-app="myApp">
<head>
<title>Hello AngularJS</title>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.3/angular.min.js"></script>
<script src="hello.js"></script>
</head>
<body>
<div ng-controller="myApp">
<p>The ID is {{datafromapi.id}}</p>
<p>The content is {{datafromapi.content}}</p>
</div>
</body>
</html>
Это вызывает CDN для angularjs, если вы не хотите их загружать.
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.3/angular.min.js"></script>
<script src="hello.js"></script>
Надеюсь это поможет.