AngularJS AJAX: effettua chiamate AJAX utilizzando $http
AngularJS AJAX
AJAX รจ la forma abbreviata di Asynchronous JavaScript e XML. AJAX รจ stato progettato principalmente per aggiornare parti di una pagina web, senza ricaricare l'intera pagina.
Il motivo per cui รจ stata progettata questa tecnologia รจ stato quello di ridurre il numero di viaggi di andata e ritorno effettuati tra il client e il server e il numero di aggiornamenti dell'intera pagina che avvenivano ogni volta che un utente richiedeva determinate informazioni.
AJAX ha permesso alle pagine web di essere aggiornate in modo asincrono scambiando piccole quantitร di dati con il server dietro le quinte. Ciรฒ significava che era possibile aggiornare parti di una pagina web, senza ricaricare l'intera pagina.
Molte applicazioni web moderne seguono effettivamente questa tecnica per aggiornare la pagina o ottenere dati dal server.
Interazioni di alto livello con i server che utilizzano $resource
Angular fornisce due diverse API per gestire le richieste Ajax. Sono
- $risorsa
- $http
Esamineremo la proprietร โ$resourceโ in Angular, che viene utilizzata per interagire con i server ad alto livello.
Quando parliamo di interazione a un livello superiore, significa che ci preoccuperemo solo di ciรฒ che il server ha da offrire in termini di funzionalitร e non di cosa fa esattamente il server in dettaglio rispetto a questa funzionalitร .
Ad esempio, se il server ospitasse un'applicazione che gestisce le informazioni sui dipendenti di una determinata azienda, il server potrebbe esporre ai client funzionalitร quali GetEmployeeDetails, SetEmployeeDetails, ecc.
Quindi, a un livello elevato, sappiamo cosa possono fare queste due funzioni e possiamo invocarle usando la proprietร $resource. Ma poi non conosciamo esattamente i dettagli delle funzioni "GetEmployeeDetails" e "SetEmployeeDetails" e come vengono implementate.
La spiegazione precedente illustra la cosiddetta architettura basata su REST.
- REST รจ noto come Representational State Transfer, un'architettura adottata in molti moderni sistemi basati sul web.
- Ciรฒ significa che puoi utilizzare i normali verbi HTTP GET, POST, PUT e DELETE per lavorare con un'applicazione basata sul web.
Supponiamo quindi di avere un'applicazione Web che mantiene un elenco di Eventi.
Se volessimo arrivare all'elenco di tutti gli eventi,
- L'applicazione Web puรฒ esporre un URL come http://example/events e
- Possiamo usare il verbo โGETโ per ottenere lโelenco completo degli eventi se lโapplicazione segue unโarchitettura basata su REST.
Ad esempio, se si รจ verificato un evento con ID 1, possiamo ottenere i dettagli di questo evento tramite l'URL. http://example/events/1
Qual รจ l'oggetto $resource
L'oggetto $resource in Angular facilita l'utilizzo di server che gestiscono applicazioni su un'architettura basata su REST.
Di seguito viene fornita la sintassi di base dell'istruzione @resource insieme alle varie funzioni
Sintassi dell'istruzione @resource
var resource Object = $resource(url);
Una volta che hai ResourceObject a portata di mano, puoi utilizzare le funzioni seguenti per effettuare le chiamate REST richieste.
1. get([params], [success], [error]) โ Puรฒ essere utilizzato per effettuare la chiamata GET standard.
2. save([params], postData, [success], [error]) โ Puรฒ essere utilizzato per effettuare la chiamata POST standard.
3. query([params], [success], [error]) โ Puรฒ essere utilizzata per effettuare la chiamata GET standard, ma come parte della risposta viene restituito un array.
4. delete([params], postData, [success], [error]) โ Puรฒ essere utilizzato per effettuare la chiamata DELETE standard.
In tutte le funzioni indicate di seguito รจ possibile utilizzare il parametro 'params' per fornire i parametri richiesti, che devono essere passati nell'URL.
Per esempio,
- Supponiamo di passare un valore di Topic: 'Angular' come 'param' nella funzione get come
- Ottenere('http://example/events' ,'{ Argomento: 'Angolare' }')
- L'URL http://example/events?Topic=Angular viene richiamato come parte della funzione get.
Come utilizzare la proprietร $resource di AngularJS
Per utilizzare la proprietร $resource, รจ necessario seguire i seguenti passaggi:
Passo 1) Il file โangular-resource.jsโ deve essere scaricato dal sito Angular.JS e inserito nell'applicazione.
Passo 2) Il modulo dell'applicazione dovrebbe dichiarare una dipendenza dal modulo "ngResource" per utilizzare $resource.
Nell'esempio seguente, chiamiamo il modulo "ngResource" dalla nostra applicazione 'DemoApp'.
angular.module(DemoApp,['ngResource']); //DemoApp is our main module
Passo 3) Chiamare la funzione $resource() con l'endpoint REST, come mostrato nell'esempio seguente.
In questo caso, l'oggetto $resource avrร la capacitร di richiamare la funzionalitร necessaria esposta dagli endpoint REST.
L'esempio seguente richiama l'URL dell'endpoint: http://example/events/1
angular.module('DemoApp.services').factory('Entry', function($resource)
{
return $resource('/example/Event/:1); // Note the full endpoint address
});
Nell'esempio sopra vengono eseguite le seguenti operazioni
- Quando si definisce l'applicazione Angular, viene creato un servizio utilizzando l'istruzione "DemoApp.services" dove DemoApp รจ il nome assegnato alla nostra applicazione Angular.
- Per creare i dettagli di questo nuovo servizio viene utilizzato il metodo .factory.
- "Entrata" รจ il nome che stiamo dando al nostro servizio e puรฒ essere qualsiasi nome tu voglia fornire.
- In questo servizio, stiamo creando una funzione che chiamerร l'API $resource
- $resource('/example/Event/:1). La funzione $resource รจ un servizio che viene utilizzato per chiamare un endpoint REST. L'endpoint REST รจ normalmente un URL. Nella funzione sopra, stiamo utilizzando l'URL (/example /Event/:1) come endpoint REST. Il nostro endpoint REST(/example /Event/:1) denota che c'รจ un'applicazione Event che si trova sul nostro sito principale "example". Questa applicazione Event รจ sviluppata utilizzando un'architettura basata su REST.
- Il risultato della chiamata di funzione รจ un oggetto della classe di risorsa. L'oggetto risorsa ora avrร le funzioni ( get() , query() , save() ,remove(), delete() ) che possono essere richiamate.
Passo 4) Ora possiamo utilizzare i metodi restituiti nel passaggio precedente (che sono get() , query() , save() ,remove(), delete() ) nel nostro controller.
Nello snippet di codice seguente, utilizziamo la funzione get() come esempio
Diamo un'occhiata al codice che puรฒ utilizzare la funzione 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);
});
Nel passaggio precedente,
- La funzione get() nello snippet precedente invia una richiesta GET a /example/Event/:1.
- Il parametro:1 nell'URL viene sostituito con $scope.id.
- La funzione get() restituirร un oggetto vuoto che verrร popolato automaticamente quando i dati effettivi provengono dal server.
- Il secondo argomento di get() รจ un callback che viene eseguito quando i dati arrivano dal server. Il possibile output dell'intero codice sarebbe un oggetto JSON che restituirebbe l'elenco degli eventi esposti dal sito Web "esempio". Di seguito รจ mostrato un esempio di ciรฒ che puรฒ essere restituito
{ { 'EventName' : 'Angular , 'EventDescription' : 'Angular Basics'}, { 'EventName' : 'Node , 'EventDescription' : 'Node Basics'}, { 'EventName' : 'Programming in C++ , 'EventDescription' : 'C++ Basics'} }
Interazioni del server di basso livello con $http
$http รจ un altro servizio Angular JS utilizzato per leggere dati da server remoti. La forma piรน popolare di dati letti dai server sono i dati in formato JSON.
Supponiamo di avere a PHP Pagina ( http://example/angular/getTopics.PHP ) che restituisce i seguenti dati JSON
"Topics": [
{
"Name" : "Controllers",
"Description" : "Controllers in action"
},
{
"Name" : "Models",
"Description" : "Binding data using Models"
},
{
"Name" : "Directives",
"Description" : "Using directives in Angular"
}
]
Diamo un'occhiata al codice AngularJS utilizzando $http, che puรฒ essere utilizzato per ottenere i dati di cui sopra dal server
<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>
Nell'esempio sopra
- Stiamo aggiungendo il servizio $http alla nostra funzione Controller in modo da poter utilizzare la funzione "get" del servizio $http.
- Ora stiamo utilizzando la funzione get dal servizio HTTP per ottenere gli oggetti JSON dall'URL http://example /angular/getTopics.PHP
- Sulla base dell'oggetto 'risposta', stiamo creando una funzione di callback che restituirร i record di dati e successivamente li memorizzeremo nell'oggetto $scope.
- Possiamo quindi utilizzare la variabile $scope.names dal controller e usarla nella nostra vista per visualizzare gli oggetti JSON di conseguenza.
Come recuperare i dati da SQL e MySQL Server che utilizza AngularJS
Angular puรฒ anche essere utilizzato per recuperare dati da un server in esecuzione MySQL oSQL.
L'idea รจ che se hai una pagina PHP che si connette a un file MySQL database o un Asp.Net pagina che si collega a un MS SQL server, รจ necessario assicurarsi che sia la pagina PHP che quella ASP.Net visualizzino i dati in formato JSON.
Di seguito รจ riportato il processo passo dopo passo su come recuperare dati da SQL e MySQL Server che utilizza AngularJS.
Supponiamo di avere un sito PHP (http://example /angular/getTopics.PHP) che forniscono dati da a MySQL o database SQL.
Passo 1) Prendi i dati da a MySQL banca dati
Il primo passo รจ assicurarsi che la pagina PHP prenda i dati da a MySQL database e fornisce i dati in formato JSON.
Passo 2) Ottieni i dati JSON utilizzando il servizio $http
Scrivi il codice simile mostrato sopra per utilizzare il servizio $http per ottenere i dati JSON.
Diamo un'occhiata al codice AngularJS utilizzando $http che puรฒ essere utilizzato per ottenere i dati di cui sopra dal server
<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>
Passo 3) Visualizza i dati nella tua vista utilizzando il file direttiva ng-repeat
Di seguito utilizziamo la direttiva ng-repeat per esaminare ciascuna delle coppie chiave-valore negli oggetti JSON restituiti dal metodo "get" del servizio $http.
Per ogni oggetto JSON, visualizziamo la chiave che รจ "Nome" e il valore รจ "Descriptioneโ.
<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>
Sintesi
- La forma completa di AJAX รจ Asynchronous JavaCopione e XML.
- Abbiamo dato un'occhiata a cosa a RIPOSANTE l'architettura รจ, che non รจ altro che una funzionalitร esposta dalle applicazioni web basate sui normali verbi HTTP GET, POST, PUT e DELETE.
- L'oggetto $resource viene utilizzato con Angular per interagire con le applicazioni web RESTFUL ad alto livello, il che significa che invochiamo solo la funzionalitร esposta dall'applicazione web ma non ci preoccupiamo di come viene implementata la funzionalitร .
- Abbiamo anche esaminato il servizio $http che puรฒ essere utilizzato per ottenere dati da un'applicazione web. Ciรฒ รจ possibile perchรฉ il servizio $http puรฒ funzionare con le applicazioni web a un livello piรน dettagliato.
- Grazie alla potenza del servizio $http, questo puรฒ essere utilizzato per ottenere dati da a MySQL o MS SQL Server tramite un'applicazione PHP. I dati possono quindi essere visualizzati in una tabella utilizzando la direttiva ng-repeat.
