Angular 2 - Obtendo dados com Http (Get)
Neste artigo vou mostrar como podemos obter informações usando o método Htttp.get com o Angular 2 e o Visual Studio Code. |
Se você esta chegando agora e não sabe o que é esse tal de Angular 2, leia os artigos abaixo que mostram como configurar o ambiente e criar uma aplicação Angular 2.
A biblioteca HTTP do Angular fornece o cliente Http para a comunicação com o servidor. O método Get() é o método do cliente Http que usa o método HTTP GET para se comunicar com o servidor usando uma URL HTTP.
Precisamos passar a URL HTTP para o método Http.get() e ele vai retornar um Observable sendo que para ouvir os valores de Observable, precisamos subscrevê-lo (subscribe).
Podemos também buscar diretamente o valor Observable em nosso template HTML usando um pipe assíncrono. Além disso, o Observable pode ser convertido em Promise usando o método toPromise().
O método Http.get() se comunica com o servidor quando buscamos valores Observable ou Promise.
Vejamos a sintaxe usada no Angular:
get(url: string, options?: RequestOptionsArgs) : Observable<Response>
get() - é o método da API Angular Http que interage com o servidor usando o método HTTP GET. Ele aceita uma URL HTTP e retorna uma instância de Observable. Usar RequestOptionsArgs é opcional
Para usar os recursos do Http.Get precisamos fazer o seguinte:
1 - precisamos importar a biblioteca HttpModule em @NgModule usando o metada imports na aplicação module:
import { NgModule } from
'@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { HttpModule } from '@angular/http'; @NgModule({ --------- --------- imports: [ BrowserModule, HttpModule ] --------- --------- }) |
2 - Precisamos realizar a comunicação com servidor em uma classe service e não em um componente. Na classe de serviço usamos a injeção de dependência no construtor da classe para obter uma instância Http:
constructor(private http:Http) { }
Observable<Response> ob = this.http.get(this.url);
Podemos usar
Observable ou Promise com http.get().
Observable é uma API RxJS e é uma representação de qualquer conjunto de valores
em qualquer período de tempo. Todos os métodos Http Angular retornam Observable.
Ele fornece métodos como :
Neste artigo vamos acessar um serviço pronto localizado neste link: http://www.jsontest.com/ sendo que vamos acessar o end point : http://date.jsontest.com para retornar a data no seguinte formato JSON:
{
"time": "03:53:25 AM",
"milliseconds_since_epoch": 1362196405309,
"date": "03-02-2013"
}
Acessando dados remotos com Http.Get
Crie uma pasta para organizar os seus projetos e a seguir crie um novo projeto Angular usando o comando : ng new acessowebapi
1- No arquivo app.module.ts importe a biblioteca HttpModule :
import { HttpModule } from '@angular/http';
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppComponent } from './app.component';
@NgModule({
declarations: [
AppComponent,
],
imports: [
BrowserModule,
HttpModule
],
bootstrap: [AppComponent]
})
export class AppModule { }
|
2 - Crie o serviço HttpTestService no arquivo http-test.service.ts usando o seguinte comando do Angular CLI : ng g service http-test
Inclua o código abaixo neste arquivo:
import { Injectable } from '@angular/core';
import { Http, Response } from "@angular/http";
import 'rxjs/add/operator/map';
import { Observable } from "rxjs/Observable";
@Injectable()
export class HttpTestService {
constructor(private _http : Http) { }
getCurrentTime(){
return this._http.get('http://date.jsontest.com')
.map(res=> res.json());
}
}
|
Temos o serviço HttpTestService definindo o método getCurrentTime() que usa o método http.get() para obter a data e hora da url : http://date.jsontest.com.
Até este momento apenas configuramos o serviço http para fazer uma requisição, e, usando o operador map estamos obtendo o resultado json que vem no response.
Lembre-se
que a requisição será feita somente após subscrevemos o serviço usando
subscribe.
3 - Abra o arquivo
app.component.ts e altere o seu código conforme abaixo:
import { HttpTestService } from './http-test.service';
import { Component } from '@angular/core';
@Component({
selector: 'app-root',
template: `
<p>
<Label>Acessando dados de : http://date.jsontest.com com get()</Label>
</p>
<button (click)="onTestGet()">Teste GET Request</button>
<p>Resultado : {{getData}}</p>
` ,
providers : [HttpTestService]
})
export class AppComponent {
getData : string;
constructor(private httpService : HttpTestService){}
onTestGet() {
this.httpService.getCurrentTime()
.subscribe(
data => this.getData = JSON.stringify(data),
error => alert(error),
() => console.log("acesso a webapi get ok...")
);
}
|
app.component.ts |
Neste código temos :
O mais importante neste código é o subscribe que vai efetivamente fazer com que a requisição seja feita.
Executando o projeto iremos obter:
Na segunda parte do artigo vou mostrar como acessar uma API para obter a previsão do tempo.
Pegue o projeto , sem as referências, aqui : Angular_HttpGet.zip
"Ora, o fim do
mandamento é o amor de um coração puro, e de uma boa consciência, e de uma fé
não fingida."
1 Timóteo 1-5
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
Curso Fundamentos da Programação Orientada a Objetos com VB .NET
NET - Criando um livro de contatos usando o AngularJS - Macoratti
NET - AngularJS : Apresentação (início do curso) - Macoratti
ASP .NET MVC - Crud com Entity Framework e AngularJS - Macoratti
AngularJS - Conceitos Básicos - YouTube (série de 13 vídeo aulas sobre o Angular)
NET - O que é TypeScript e quais os seus benefícios - Macoratti
TypeScript - Configurando o VS Community 2015 para ... - Macoratti
Visual Studio - Bem-Vindo Node.js : desenvolvendo para Node.js na plataforma .NET