AngularJS AJAX: realice una llamada AJAX usando $http

AngularJS AJAX

AJAX es la forma corta de Asynchronous JavaScript y XML. AJAX fue diseรฑado principalmente para actualizar partes de una pรกgina web, sin tener que recargar toda la pรกgina.

La razรณn para diseรฑar esta tecnologรญa fue reducir la cantidad de viajes de ida y vuelta que se realizaban entre el cliente y el servidor y la cantidad de actualizaciones de pรกginas completas que solรญan tener lugar cada vez que un usuario requerรญa cierta informaciรณn.

AJAX permitiรณ que las pรกginas web se actualizaran de forma asincrรณnica mediante el intercambio de pequeรฑas cantidades de datos con el servidor en segundo plano. Esto significaba que era posible actualizar partes de una pรกgina web sin tener que recargar toda la pรกgina.

Muchas aplicaciones web modernas siguen esta tรฉcnica para actualizar la pรกgina u obtener datos del servidor.

Interacciones de alto nivel con servidores usando $resource

Angular proporciona dos API diferentes para manejar solicitudes de Ajax. Ellos son

  • $ recurso
  • $ http

Veremos la propiedad โ€œ$resourceโ€ en Angular, que se utiliza para interactuar con servidores de alto nivel.

Cuando hablamos de interactuar a un nivel superior, significa que sรณlo nos preocuparemos de lo que el servidor tiene para ofrecer en cuanto a funcionalidad y no de quรฉ hace exactamente el servidor en detalle con respecto a esta funcionalidad.

Por ejemplo, si el servidor alojara una aplicaciรณn que mantiene la informaciรณn de los empleados de una determinada empresa, el servidor podrรญa exponer funcionalidades a clientes como GetEmployeeDetails, SetEmployeeDetails, etc.

En un nivel alto, sabemos quรฉ pueden hacer estas dos funciones y podemos invocarlas mediante la propiedad $resource. Pero no conocemos exactamente los detalles de las funciones โ€œGetEmployeeDetailsโ€ y โ€œSetEmployeeDetailsโ€, ni cรณmo se implementan.

La explicaciรณn anterior explica lo que se conoce como una arquitectura basada en REST.

  • REST se conoce como Transferencia de Estado Representacional, que es una arquitectura seguida en muchos sistemas modernos basados โ€‹โ€‹en la web.
  • Significa que puede utilizar los verbos HTTP normales de GET, POST, PUT y DELETE para trabajar con una aplicaciรณn basada en web.

Entonces supongamos que tenemos una aplicaciรณn web que mantiene una lista de Eventos .

Si quisiรฉramos llegar a la lista de todos los eventos,

  • La aplicaciรณn web puede exponer una URL como http://example/events y
  • Podemos usar el verbo โ€œGETโ€ para obtener la lista completa de eventos si la aplicaciรณn sigue una arquitectura basada en REST.

Por ejemplo, si hubo un evento con ID 1, podemos obtener los detalles de este evento a travรฉs de URL. http://example/events/1

ยฟQuรฉ es el objeto $recurso?

El objeto $resource en Angular ayuda a trabajar con servidores que sirven aplicaciones en una arquitectura basada en REST.

La sintaxis bรกsica de la declaraciรณn @resource junto con las diversas funciones se detallan a continuaciรณn

Sintaxis de la declaraciรณn @resource

var resource Object = $resource(url);

Una vez que tenga el objeto de recurso a mano, puede utilizar las siguientes funciones para realizar las llamadas REST necesarias.

1. get([params], [รฉxito], [error]): esto se puede utilizar para realizar la llamada GET estรกndar.

2. save([params], postData, [success], [error]): esto se puede utilizar para realizar la llamada POST estรกndar.

3. consulta ([parรกmetros], [รฉxito], [error]): esto se puede usar para realizar la llamada GET estรกndar, pero se devuelve una matriz como parte de la respuesta.

4. remove([params], postData, [success], [error]): esto se puede utilizar para realizar la llamada DELETE estรกndar.

En todas las funciones que se muestran a continuaciรณn, el parรกmetro 'params' se puede utilizar para proporcionar los parรกmetros necesarios, que deben pasarse en la URL.

Por ejemplo,

  • Supongamos que pasa un valor de Tema: 'Angular' como 'parรกmetro' en la funciรณn get como
  • conseguir('http://example/events' ,'{ Tema: 'Angular' }')
  • El URL http://example/events?Topic=Angular se invoca como parte de la funciรณn get.

Cรณmo utilizar la propiedad $resource de AngularJS

Para utilizar la propiedad $resource, se deben seguir los siguientes pasos:

Paso 1) El archivo "angular-resource.js" debe descargarse del sitio Angular.JS y debe colocarse en la aplicaciรณn.

Paso 2) El mรณdulo de la aplicaciรณn debe declarar una dependencia del mรณdulo โ€œngResourceโ€ para poder utilizar el recurso $.

En el siguiente ejemplo, llamamos al mรณdulo โ€œngResourceโ€ desde nuestra aplicaciรณn 'DemoApp'.

angular.module(DemoApp,['ngResource']); //DemoApp is our main module

Paso 3) Llamar a la funciรณn $resource() con su punto final REST, como se muestra en el siguiente ejemplo.

Si hace esto, el objeto $resource tendrรก la capacidad de invocar la funcionalidad necesaria expuesta por los puntos finales REST.

El siguiente ejemplo llama al punto final. URL: http://example/events/1

angular.module('DemoApp.services').factory('Entry', function($resource) 
{
     return $resource('/example/Event/:1); // Note the full endpoint address
});

En el ejemplo anterior se estรกn haciendo las siguientes cosas

  1. Al definir la aplicaciรณn Angular, se crea un servicio utilizando la declaraciรณn 'DemoApp.services' donde DemoApp es el nombre que se le da a nuestra aplicaciรณn Angular.
  2. El mรฉtodo .factory se utiliza para crear los detalles de este nuevo servicio.
  3. "Entrada" es el nombre que le damos a nuestro servicio, que puede ser cualquier nombre que desee proporcionar.
  4. En este servicio, estamos creando una funciรณn que llamarรก a la API $resource
  5. $resource('/example/Event/:1).La funciรณn $resource es un servicio que se utiliza para llamar a un punto final REST. El punto final REST normalmente es un URL. En la funciรณn anterior, estamos utilizando el URL (/example /Event/:1) como nuestro punto final REST. Nuestro punto final REST (/example /Event/:1) indica que hay una aplicaciรณn de eventos alojada en nuestro sitio principal โ€œexampleโ€. Esta aplicaciรณn de eventos estรก desarrollada utilizando una arquitectura basada en REST.
  6. El resultado de la llamada a la funciรณn es un objeto de clase de recurso. El objeto de recurso ahora tendrรก las funciones ( get() , query() , save() , remove(), delete() ) que se pueden invocar.

Paso 4) Ahora podemos usar los mรฉtodos que se devolvieron en el paso anterior (que son get(), query(), save(), remove(), delete()) en nuestro controlador.

En el siguiente fragmento de cรณdigo, utilizamos la funciรณn get() como ejemplo

Veamos el cรณdigo que puede utilizar la funciรณn get().

angular.module('DemoApp.controllers',[]);
angular.module('DemoApp.controllers').controller('DemoController',function($scope, MyFunction) {
  var obj = MyFunction.get({ 1: $scope.id }, function() {
    console.log(obj);
  });

En el paso anterior,

  • La funciรณn get() en el fragmento anterior emite una solicitud GET a / ejemplo /Event/:1.
  • El parรกmetro:1 en el URL se reemplaza con $scope.id.
  • La funciรณn get() devolverรก un objeto vacรญo que se completa automรกticamente cuando los datos reales provienen del servidor.
  • El segundo argumento para get() es una devoluciรณn de llamada que se ejecuta cuando los datos llegan del servidor. El posible resultado del cรณdigo completo serรญa un objeto JSON que devolverรญa la lista de eventos expuestos en el sitio web de "ejemplo". A continuaciรณn se muestra un ejemplo de lo que se puede devolver.
    {
    { 'EventName' : 'Angular , 'EventDescription' : 'Angular Basics'},
    { 'EventName' : 'Node , 'EventDescription' : 'Node Basics'},
    { 'EventName' : 'Programming in C++ , 'EventDescription' : 'C++ Basics'}
    
    }

Interacciones del servidor de bajo nivel con $http

$http es otro servicio de Angular JS que se utiliza para leer datos de servidores remotos. La forma mรกs popular de datos que se lee desde los servidores son los datos en formato JSON.

Supongamos que tenemos un PHP pรกgina ( http://example/angular/getTopics.PHP ) que devuelve los siguientes datos JSON

"Topics": [
  {
    "Name" : "Controllers",
    "Description" : "Controllers in action"
  },
  {
    "Name" : "Models",
    "Description" : "Binding data using Models"
  },
  {
    "Name" : "Directives",
    "Description" : "Using directives in Angular"
  }
]

Veamos el cรณdigo AngularJS usando $http, que se puede usar para obtener los datos anteriores del servidor.

<script>
var app = angular.module('myApp', []);
app.controller('AngularCtrl', function($scope, $http) {
    $http.get("http://example/angular/getTopics.PHP")
    .then(function(response) 
{
$scope.names = response.data.records;});
});
</script>

En el ejemplo anterior

  1. Estamos agregando el servicio $http a nuestra funciรณn Controlador para poder usar la funciรณn "obtener" del servicio $http.
  2. Ahora estamos utilizando la funciรณn get del servicio HTTP para obtener los objetos JSON del URL http://example /angular/getTopics.PHP
  3. Basado en el objeto 'respuesta', estamos creando una funciรณn de devoluciรณn de llamada que devolverรก los registros de datos y posteriormente los almacenaremos en el objeto $scope.
  4. Luego podemos usar la variable $scope.names del controlador y usarla en nuestra vista para mostrar los objetos JSON en consecuencia.

Cรณmo obtener datos de SQL y MySQL Servidor usando AngularJS

Angular tambiรฉn se puede utilizar para recuperar datos de un servidor que ejecuta MySQL o SQL.

La idea es que si tienes una pรกgina PHP conectada a un MySQL base de datos o un asp.net pรกgina de conexiรณn a una MS SQL base de datos del servidor, entonces debe asegurarse de que tanto la pรกgina PHP como la ASP.Net representen los datos en formato JSON.

A continuaciรณn se muestra el proceso paso a paso sobre cรณmo obtener datos de SQL y MySQL Servidor usando AngularJS.

Supongamos que tenemos un sitio PHP (http://example /angular/getTopics.PHP) entregando datos desde un MySQL o base de datos SQL.

Paso 1) Tomar datos de un MySQL base de datos de CRISPR Medicine News
El primer paso es asegurarse de que la pรกgina PHP tome los datos de un MySQL base de datos y sirve los datos en formato JSON.

Paso 2) Obtenga los datos JSON usando el servicio $http
Escriba el cรณdigo similar que se muestra arriba para utilizar el servicio $http para obtener los datos JSON.

Veamos el cรณdigo AngularJS usando $http que se puede usar para obtener los datos anteriores del servidor.

<script>
var app = angular.module('myApp', []);
app.controller('AngularCtrl', function($scope, $http) {
    $http.get("http://example /angular/getTopics.PHP")
    .then(function(response) 
{
	$scope.topics = response.data.records;});
});
</script>

Paso 3) Renderice datos en su vista usando el directiva ng-repetir

A continuaciรณn, utilizamos la directiva ng-repeat para revisar cada uno de los pares clave-valor en los objetos JSON devueltos por el mรฉtodo "get" del servicio $http.

Para cada objeto JSON, mostramos la clave que es "Nombre" y el valor es "Description".

<div ng-app="myApp" ng-controller="AngularCtrl"> 
<table>
  <tr ng-repeat="x in topics">
    <td>{{ x.Name }}</td>
    <td>{{ x.Description }}</td>
  </tr>
</table>
</div>

Resumen

  • La forma completa de AJAX es Asรญncrono. JavaScript y XML.
  • Hemos echado un vistazo a lo que SOSEGADO La arquitectura es, no es nada mรกs que una funcionalidad expuesta por las aplicaciones web basadas en los verbos HTTP normales de GET, POST, PUT y DELETE.
  • El objeto $resource se usa con Angular para interactuar con las aplicaciones web RESTFUL en un alto nivel, lo que significa que solo invocamos la funcionalidad expuesta por la aplicaciรณn web pero no nos preocupamos de cรณmo se implementa la funcionalidad.
  • Tambiรฉn analizamos el servicio $http que se puede utilizar para obtener datos de una aplicaciรณn web. Esto es posible porque el servicio $http puede funcionar con aplicaciones web a un nivel mรกs detallado.
  • Debido al poder del servicio $http, este puede usarse para obtener datos de un MySQL o MS SQL Server a travรฉs de una aplicaciรณn PHP. Luego, los datos se pueden representar en una tabla usando la directiva ng-repeat.

Resumir este post con: