Я очень новичок в angularJS. Я ищу доступ к сервисам из RESTful API, но я понятия не имел. Как я могу это сделать?
Как получить доступ к сервисам из RESTful API на моей странице angularjs?
Ответ 1
Вариант 1: $http service
AngularJS предоставляет $http
службу, которая делает именно то, что вы хотите: Отправка запросов AJAX к веб-службам и получение данных от них, используя JSON (что отлично подходит для общения с службами REST).
Чтобы привести пример (взятый из документации AngularJS и слегка адаптированный):
$http({ method: 'GET', url: '/foo' }).
success(function (data, status, headers, config) {
// ...
}).
error(function (data, status, headers, config) {
// ...
});
Вариант 2: $resource service
Обратите внимание, что в службе AngularJS есть еще одна услуга $resource
, которая обеспечивает доступ к службам REST на более высоком уровне мода (пример снова взят из документации AngularJS):
var Users = $resource('/user/:userId', { userId: '@id' });
var user = Users.get({ userId: 123 }, function () {
user.abc = true;
user.$save();
});
Вариант 3: рестатулярный
Кроме того, существуют сторонние решения, такие как Restangular. См. Документацию о том, как ее использовать. В основном, это более декларативное и абстрагирует больше деталей от вас.
Ответ 2
Служба $http может использоваться для AJAX общего назначения. Если у вас есть правильный API RESTful, вы должны взглянуть на ngResource.
Вы также можете взглянуть на Restangular, который является сторонней библиотекой для простого управления API REST.
Ответ 3
Добро пожаловать в чудесный мир 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
Удачи!
Mike
Ответ 4
Просто для расширения $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
Ответ 5
Например, ваш 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>
Надеюсь, что это поможет.