web-dev-qa-db-ja.com

angularjsページでRESTful APIからサービスにアクセスする方法は?

AngularJSは非常に新しいです。 RESTful APIからサービスへのアクセスを探していますが、何も考えられませんでした。どうやってやるの?

88
anilCSE

オプション1:$ httpサービス

AngularJSは $http service を提供します。これはまさにあなたが望むことをします:AJAXリクエストをWebサービスに送信し、JSONを使用してそれらからデータを受信します(これはRESTサービス)。

例を挙げます(AngularJSのドキュメントから抜粋し、わずかに改作しました):

$http({ method: 'GET', url: '/foo' }).
  success(function (data, status, headers, config) {
    // ...
  }).
  error(function (data, status, headers, config) {
    // ...
  });

オプション2:$ resourceサービス

AngularJSには、より高度な方法でRESTサービスへのアクセスを提供する $resource service という別のサービスもあります(AngularJSのドキュメントからの例)。

var Users = $resource('/user/:userId', { userId: '@id' });
var user = Users.get({ userId: 123 }, function () {
  user.abc = true;
  user.$save();
});

オプション3:角形

また、 Restangular などのサードパーティのソリューションもあります。使用方法については、 ドキュメント をご覧ください。基本的に、それはより宣言的な方法であり、あなたから離れて詳細を抽象化します。

145
Golo Roden

$ http サービスは、汎用AJAXに使用できます。適切なRESTful APIがある場合は、 ngResource をご覧ください。

Restangular もご覧ください。これは、REST AP​​Iを簡単に処理するためのサードパーティライブラリです。

13

Angularの素晴らしい世界へようこそ!!

AngularJSは非常に新しいです。 RESTful APIからサービスにアクセスしようとしていますが、何も考えられませんでした。助けてください。ありがとうございました

現在「GET」サービスを使用している場合、最初のAngularスクリプトを記述するには2つの(非常に大きな)ハードルがあります。

まず、サービスは「Access-Control-Allow-Origin」プロパティを実装する必要があります。そうしないと、サービスはWebブラウザーなどから呼び出された場合は扱いますが、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' Webサービスを呼び出すようにする必要があります。

// 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 !
        //  
    });
}

このWebページで、これらの手順の非常に明確なウォークスルーを見つけることができます。

JSONデータで、Angularを使用

がんばろう !

マイク

10
Mike Gledhill

ここで$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
7
CKuharski

たとえば、jsonは次のようになります。{"id":1、 "content": "Hello、World!"}

このようにanglejsを介してこれにアクセスできます:

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>

あなたがそれらをダウンロードしたくない場合、これはangularjsのCDNを呼び出します。

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.3/angular.min.js"></script>
<script src="hello.js"></script>

お役に立てれば。

0
PinoyDev