Soy muy nuevo en angularJS. Estoy buscando acceder a servicios desde la API RESTful, pero no tengo ni idea. ¿Cómo puedo hacer eso?
fuente
Soy muy nuevo en angularJS. Estoy buscando acceder a servicios desde la API RESTful, pero no tengo ni idea. ¿Cómo puedo hacer eso?
AngularJS proporciona el $http
servicio que hace exactamente lo que usted desea: enviar solicitudes AJAX a servicios web y recibir datos de ellos, usando JSON (que es perfecto para hablar con servicios REST).
Para dar un ejemplo (tomado de la documentación de AngularJS y ligeramente adaptado):
$http({ method: 'GET', url: '/foo' }).
success(function (data, status, headers, config) {
// ...
}).
error(function (data, status, headers, config) {
// ...
});
Tenga en cuenta que también hay otro servicio en AngularJS, el $resource
servicio que proporciona acceso a los servicios REST de una manera más de alto nivel (ejemplo nuevamente tomado de la documentación de AngularJS):
var Users = $resource('/user/:userId', { userId: '@id' });
var user = Users.get({ userId: 123 }, function () {
user.abc = true;
user.$save();
});
Además, también existen soluciones de terceros, como Restangular . Consulte su documentación sobre cómo usarlo. Básicamente, es mucho más declarativo y abstrae más detalles de ti.
El servicio $ http se puede utilizar para AJAX de propósito general. Si tiene una API RESTful adecuada, debería echar un vistazo a ngResource .
También puede echar un vistazo a Restangular , que es una biblioteca de terceros para manejar API REST fácilmente.
fuente
¡Bienvenido al maravilloso mundo de Angular!
Hay dos obstáculos (muy grandes) para escribir sus primeros scripts angulares, si actualmente está utilizando los servicios 'GET'.
Primero, sus servicios deben implementar la propiedad "Access-Control-Allow-Origin"; de lo contrario, los servicios funcionarán de maravilla cuando se llamen desde, digamos, un navegador web, pero fallarán miserablemente cuando se llamen desde Angular.
Por lo tanto, deberá agregar algunas líneas a su archivo 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>
A continuación, debe agregar un poco de código a su archivo HTML, para obligar a Angular a llamar a los servicios web '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']; }]);
Una vez que tenga estas correcciones en su lugar, llamar a una API RESTful es realmente sencillo.
function YourAngularController($scope, $http) { $http.get('http://www.iNorthwind.com/Service1.svc/getAllCustomers') .success(function (data) { // // Do something with the data ! // }); }
Puede encontrar un tutorial muy claro de estos pasos en esta página web:
Usando Angular, con datos JSON
Buena suerte !
Miguel
fuente
Access-Control-Allow-Origin
nunca debe ser un comodín de menos que seas un público frente API ...Solo para expandir
$http
(métodos de acceso directo) aquí: http://docs.angularjs.org/api/ng.$http// Fragmento de la página
$http.get('/someUrl').success(successCallback); $http.post('/someUrl', data).success(successCallback);
// métodos de acceso directo disponibles
$http.get $http.head $http.post $http.put $http.delete $http.jsonp
fuente
Por ejemplo, su json se ve así: {"id": 1, "content": "Hello, World!"}
Puede acceder a esto a través de angularjs así:
angular.module('app', []) .controller('myApp', function($scope, $http) { $http.get('http://yourapp/api'). then(function(response) { $scope.datafromapi = response.data; }); });
Luego, en tu html lo harías así:
<!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>
Esto llama a la CDN para angularjs en caso de que no desee descargarlos.
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.3/angular.min.js"></script> <script src="hello.js"></script>
Espero que esto ayude.
fuente