Как получить доступ к сервисам из RESTful API на моей странице angularjs?

Я очень новичок в angularJS. Я ищу доступ к сервисам из RESTful API, но я понятия не имел. Как я могу это сделать?

Ответ 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>

Надеюсь, что это поможет.