SlideShare uma empresa Scribd logo
Rodrigo Branas – @rodrigobranas - http://www.agilecode.com.br
HTTP, JSON, REST e AJAX
com AngularJS
“Transformar equipes de desenvolvimento de software”
http://www.agilecode.com.br
HTTP, JSON, REST e AJAX com AngularJS
Rodrigo Branas
rodrigo.branas@agilecode.com.br
http://www.agilecode.com.br
• Desenvolvendo Software na Gennera
• Criando treinamentos na Agile Code
• Escrevendo na Java Magazine e PacktPub
• Palestrando sobre desenvolvimento de
software em eventos, universidades e
empresas
Certificações
Formação Acadêmica
Ciências da Computação – UFSC
Gerenciamento de Projetos - FGV
SCJA, SCJP, SCJD, SCWCD, SCBCD, PMP, MCP e CSM
Experiência
Há mais de 12 anos desenvolvendo software na
plataforma Java com as empresas: EDS, HP, NET,
Citibank, GM, Dígitro, Softplan, OnCast, Senai,
VALE, RBS, Unimed, Globalcode, V.Office, Suntech,
WPlex e Gennera.
• Há mais de 5 anos liderando pessoas.
• Mais de 2000 horas em sala de aula.
• Mais de 100 apresentações em eventos.
• 6 artigos escritos para revistas.
• 1 livro.
• Mais de 500 profissionais treinados.
• Criação de 22 palestras.
• Criação de 10 treinamentos.
• Criação de mais de 3.000 slides.
O que é um protocolo de
comunicação?
Alguns protocolos famosos:
• TCP – Transmission Control Protocol
• UDP – User Datagram Protocol
• ICMP – Internet Control Message Protocol
• POP3 – Post Office Protocol
• SMTP – Simple Mail Transfer Protocol
• FTP – File Transfer Protocol
• IMAP – Internet Message Access Protocol
• HTTP – Hypertext Transfer Protocol
HTTP
Hypertext Transfer Protocol
Tim Berners-Lee
Baseado em requisições e respostas
HTTP, JSON, REST e AJAX com AngularJS
GET /gformulario/portadores?nocache=1396977196206
HTTP/1.1 Host: localhost:8080
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:27.0) Gecko/20100101
Firefox/27.0
Accept: application/json, text/plain, */*
Accept-Language: pt-BR,pt;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Cookie: JSESSIONID=FA4FF827FF804ED0095F20F61054549C;
Requisição
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
X-Powered-By: Servlet 2.4; JBoss-4.2.3.GA (build: SVNTag=JBoss_4_2_3_GA
date=200807181417)/JBossWeb-2.0
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Date: Tue, 08 Apr 2014 17:13:16 GMT
[{"dataCriacao":1385989325053,"dataAtualizacao":1385989325053,"id":1,"banco":"3
41","agencia":"999","conta":"999999","carteira":"10","codigoCedente":"","faixaInicio
":100000,"faixaFim":200000,"faixaAtual":100006}]
Resposta
Métodos do protocolo HTTP
• GET
• POST
• PUT
• DELETE
• HEAD
• TRACE
• OPTIONS
• CONNECT
Que tipo de conteúdo o
protocolo HTTP retorna?
HTML
HTML não é nada bom para
integrar sistemas!
HTTP, JSON, REST e AJAX com AngularJS
Web Services
XML, SOAP, WSDL e UDDI
<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<soap:Header> </soap:Header>
<soap:Body>
<m:GetStockPrice xmlns:m="http://www.example.org/stock">
<m:StockName>IBM</m:StockName>
</m:GetStockPrice>
</soap:Body>
</soap:Envelope>
Conteúdo de uma requisição SOAP
<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<soap:Body>
<m:GetStockPriceResponse>
<m:Price>34.5</m:Price>
</m:GetStockPriceResponse>
</soap:Body>
</soap:Envelope>
Conteúdo de uma resposta SOAP
HTTP, JSON, REST e AJAX com AngularJS
JSON
JavaScript Notation
[
{
"dataCriacao": 1385989325053,
"dataAtualizacao": 1385989325053,
"id": 1,
"cnpj": "02696435000148",
"banco": "341",
"agencia": "1573",
"conta": "248844",
"carteira": "175",
"faixaInicio": 100000,
"faixaFim": 200000,
"faixaAtual": 100006,
}
]
Conteúdo de uma resposta JSON
Como podemos fazer para
acessar o Web Service?
http://www.manager.com/getContent.asp?idContent=10
http://www.school.com/deleteStudent?id=3
http://www.market.com/listProducts?category=eletronics
http://www.airport.com/flight.do?number=8999
http://www.cinema.com/showMovies?category=comedy
http://www.library.com/index.php?idBook=10
http://www.travel.com/destinations?country=France
REST
Representational State Transfer
Princípios de um Web Service REST
• Identifique as entidades envolvidas
Princípios de um Web Service REST
• Identifique as entidades envolvidas
• Crie as rotas para cada entidade
Princípios de um Web Service REST
• Identifique as entidades envolvidas
• Crie as rotas para cada entidade
• Utilize substantivos para cada rota, evitando o uso de
verbos
Princípios de um Web Service REST
• Identifique as entidades envolvidas
• Crie as rotas para cada entidade
• Utilize substantivos para cada rota, evitando o uso de
verbos
• Categorize cada entidade em relação aos métodos
disponíveis (GET, POST, PUT e DELETE)
Princípios de um Web Service REST
• Identifique as entidades envolvidas
• Crie as rotas para cada entidade
• Utilize substantivos para cada rota, evitando o uso de
verbos
• Categorize cada entidade em relação aos métodos
disponíveis (GET, POST, PUT e DELETE)
• Todos os recursos disponíveis utilizando o método GET não
devem ter efeitos colaterais
Princípios de um Web Service REST
• Identifique as entidades envolvidas
• Crie as rotas para cada entidade
• Utilize substantivos para cada rota, evitando o uso de
verbos
• Categorize cada entidade em relação aos métodos
disponíveis (GET, POST, PUT e DELETE)
• Todos os recursos disponíveis utilizando o método GET não
devem ter efeitos colaterais
• Forneça a possibilidade de explorar cada recurso
disponível, navegando em sua estrutura hierarquica
Princípios de um Web Service REST
• Identifique as entidades envolvidas
• Crie as rotas para cada entidade
• Utilize substantivos para cada rota, evitando o uso de
verbos
• Categorize cada entidade em relação aos métodos
disponíveis (GET, POST, PUT e DELETE)
• Todos os recursos disponíveis utilizando o método GET não
devem ter efeitos colaterais
• Forneça a possibilidade de explorar cada recurso
disponível, navegando em sua estrutura hierarquica
• Documente a API e disponibilize para todos os envolvidos
no projeto
Criando um Web Service REST
com Node.js e Express
Express
Instando o Express
package.json
{
"name": "contatos",
"description": "",
"version": "0.0.1",
"dependencies": {
"express": "3.x"
}
}
npm install
1. var express = require('express');
1. var express = require('express');
2. var app = express();
1. var express = require('express');
2. var app = express();
3.
4. app.get('/contatos', function(req, res) {
5. });
1. var express = require('express');
2. var app = express();
3.
4. app.get('/contatos', function(req, res) {
5. var contatos = [];
6. });
1. var express = require('express');
2. var app = express();
3.
4. app.get('/contatos', function(req, res) {
5. var contatos = [{nome: "João", telefone: "98766789"}];
6. });
1. var express = require('express');
2. var app = express();
3.
4. app.get('/contatos', function(req, res) {
5. var contatos = [{nome: "João", telefone: "98766789"},
6. {nome: "Pedro", telefone: "99879999"}];
7. });
1. var express = require('express');
2. var app = express();
3.
4. app.get('/contatos', function(req, res) {
5. var contatos = [{nome: "João", telefone: "98766789"},
6. {nome: "Pedro", telefone: "99879999"},
7. {nome: "Mateus", telefone: "99998888"}];
8. });
1. var express = require('express');
2. var app = express();
3.
4. app.get('/contatos', function(req, res) {
5. var contatos = [{nome: "João", telefone: "98766789"},
6. {nome: "Pedro", telefone: "99879999"},
7. {nome: "Mateus", telefone: "99998888"}];
8. res.json(contatos);
9. });
1. var express = require('express');
2. var app = express();
3.
4. app.get('/contatos', function(req, res) {
5. var contatos = [{nome: "João", telefone: "98766789"},
6. {nome: "Pedro", telefone: "99879999"},
7. {nome: "Mateus", telefone: "99998888"}];
8. res.json(contatos);
9. });
10.
11. app.listen(3412);
HTTP, JSON, REST e AJAX com AngularJS
1. var express = require('express');
2. var app = express();
3.
4. app.get('/contatos', function(req, res) {
5. var contatos = [{nome: "João", telefone: "98766789"},
6. {nome: "Pedro", telefone: "99879999"},
7. {nome: "Mateus", telefone: "99998888"}];
8. res.json(contatos);
9. });
10.
11. app.listen(3412);
1. var express = require('express');
2. var app = express();
3.
4. var contatos = [{nome: "João", telefone: "98766789"},
5. {nome: "Pedro", telefone: "99879999"},
6. {nome: "Mateus", telefone: "99998888"}];
7. app.get('/contatos', function(req, res) {
8. res.json(contatos);
9. });
10.
11. app.listen(3412);
1. var express = require('express');
2. var app = express();
3.
4. var contatos = [{nome: "João", telefone: "98766789"},
5. {nome: "Pedro", telefone: "99879999"},
6. {nome: "Mateus", telefone: "99998888"}];
7.
8. app.get('/contatos', function(req, res) {
9. res.json(contatos);
10. });
11.
12. app.listen(3412);
1. var express = require('express');
2. var app = express();
3.
4. var contatos = [{nome: "João", telefone: "98766789"},
5. {nome: "Pedro", telefone: "99879999"},
6. {nome: "Mateus", telefone: "99998888"}];
7.
8. app.get('/contatos', function(req, res) {
9. res.json(contatos);
10. });
11.
12. app.post('/contatos', function(req, res) {
13. });
14.
15. app.listen(3412);
1. var express = require('express');
2. var app = express();
3.
4. var contatos = [{nome: "João", telefone: "98766789"},
5. {nome: "Pedro", telefone: "99879999"},
6. {nome: "Mateus", telefone: "99998888"}];
7.
8. app.get('/contatos', function(req, res) {
9. res.json(contatos);
10. });
11.
12. app.post('/contatos', function(req, res) {
13. var contato = req.body;
14. });
15.
16. app.listen(3412);
1. var express = require('express');
2. var app = express();
3.
4. var contatos = [{nome: "João", telefone: "98766789"},
5. {nome: "Pedro", telefone: "99879999"},
6. {nome: "Mateus", telefone: "99998888"}];
7.
8. app.get('/contatos', function(req, res) {
9. res.json(contatos);
10. });
11.
12. app.post('/contatos', function(req, res) {
13. var contato = req.body;
14. contatos.push(contato);
15. });
16.
17. app.listen(3412);
1. var express = require('express');
2. var app = express();
3.
4. var contatos = [{nome: "João", telefone: "98766789"},
5. {nome: "Pedro", telefone: "99879999"},
6. {nome: "Mateus", telefone: "99998888"}];
7.
8. app.get('/contatos', function(req, res) {
9. res.json(contatos);
10. });
11.
12. app.post('/contatos', function(req, res) {
13. var contato = req.body;
14. contatos.push(contato);
15. res.json(true);
16. });
17.
18. app.listen(3412);
1. var express = require('express');
2. var app = express();
3. app.use(express.bodyParser());
4.
5. var contatos = [{nome: "João", telefone: "98766789"},
6. {nome: "Pedro", telefone: "99879999"},
7. {nome: "Mateus", telefone: "99998888"}];
8.
9. app.get('/contatos', function(req, res) {
10. res.json(contatos);
11. });
12.
13. app.post('/contatos', function(req, res) {
14. var contato = req.body;
15. contatos.push(contato);
16. res.json(true);
17. });
18.
19. app.listen(3412);
1. var express = require('express');
2. var app = express();
3. app.use(express.bodyParser());
4. app.use(express.static(__dirname + '/public'));
5.
6. var contatos = [{nome: "João", telefone: "98766789"},
7. {nome: "Pedro", telefone: "99879999"},
8. {nome: "Mateus", telefone: "99998888"}];
9.
10. app.get('/contatos', function(req, res) {
11. res.json(contatos);
12. });
13.
14. app.post('/contatos', function(req, res) {
15. var contato = req.body;
16. contatos.push(contato);
17. res.json(true);
18. });
19.
20. app.listen(3412);
Consumindo um Web Service com
AJAX no AngularJS
Como podemos nos comunicar
por HTTP a partir do browser?
AJAX
Assynchronous JavaScript and XML
$http
O serviço $http realiza a comunicação por
meio do objeto XMLHttpRequest. Podemos
utilizar os seguintes métodos:
• get (url, config)
• post (url, data, config)
• put (url, data, config)
• delete (url, config)
• head (url, config)
• jsonp (url, config)
1. app.controller("listaTelefonicaCtrl", function ($scope) {
2. $scope.titulo = "Lista Telefônica";
3.
4. $scope.contatos = [{nome: "Pedro", telefone: "99991010"},
5. {nome: "André", telefone: "99767899"},
6. {nome: "Carlos", telefone: "99987689"}];
7.
8. $scope.adicionarContato = function (contato) {
9. $scope.contatos.push(angular.copy(contato));
10. delete $scope.contato;
11. };
12.
13. $scope.operadoras = ["Vivo", "Oi", "Tim"];
14. });
1. app.controller("listaTelefonicaCtrl", function ($scope) {
2. $scope.titulo = "Lista Telefônica";
3.
4. $scope.contatos = [{nome: "Pedro", telefone: "99991010"},
5. {nome: "André", telefone: "99767899"},
6. {nome: "Carlos", telefone: "99987689"}];
7.
8. $scope.adicionarContato = function (contato) {
9. $scope.contatos.push(angular.copy(contato));
10. delete $scope.contato;
11. };
12.
13. $scope.operadoras = ["Vivo", "Oi", "Tim"];
14. });
1. app.controller("listaTelefonicaCtrl", function ($scope) {
2. $scope.titulo = "Lista Telefônica";
3.
4. $scope.contatos = [];
5.
6. $scope.adicionarContato = function (contato) {
7. $scope.contatos.push(angular.copy(contato));
8. delete $scope.contato;
9. };
10.
11. $scope.operadoras = ["Vivo", "Oi", "Tim"];
12. });
1. app.controller("listaTelefonicaCtrl", function ($scope) {
2. $scope.titulo = "Lista Telefônica";
3.
4. $scope.contatos = [];
5.
6. $scope.adicionarContato = function (contato) {
7. $scope.contatos.push(angular.copy(contato));
8. delete $scope.contato;
9. };
10.
11. $scope.operadoras = ["Vivo", "Oi", "Tim"];
12. });
1. app.controller("listaTelefonicaCtrl", function ($scope) {
2. $scope.titulo = "Lista Telefônica";
3.
4. $scope.contatos = [];
5.
6. $scope.carregarContatos = function () {
7. };
8.
9. $scope.adicionarContato = function (contato) {
10. $scope.contatos.push(angular.copy(contato));
11. delete $scope.contato;
12. };
13.
14. $scope.operadoras = ["Vivo", "Oi", "Tim"];
15. });
1. app.controller("listaTelefonicaCtrl", function ($scope, $http) {
2. $scope.titulo = "Lista Telefônica";
3.
4. $scope.contatos = [];
5.
6. $scope.carregarContatos = function () {
7. };
8.
9. $scope.adicionarContato = function (contato) {
10. $scope.contatos.push(angular.copy(contato));
11. delete $scope.contato;
12. };
13.
14. $scope.operadoras = ["Vivo", "Oi", "Tim"];
15. });
1. app.controller("listaTelefonicaCtrl", function ($scope, $http) {
2. $scope.titulo = "Lista Telefônica";
3.
4. $scope.contatos = [];
5.
6. $scope.carregarContatos = function () {
7. $http.get();
8. };
9.
10. $scope.adicionarContato = function (contato) {
11. $scope.contatos.push(angular.copy(contato));
12. delete $scope.contato;
13. };
14.
15. $scope.operadoras = ["Vivo", "Oi", "Tim"];
16. });
1. app.controller("listaTelefonicaCtrl", function ($scope, $http) {
2. $scope.titulo = "Lista Telefônica";
3.
4. $scope.contatos = [];
5.
6. $scope.carregarContatos = function () {
7. $http.get("/contatos");
8. };
9.
10. $scope.adicionarContato = function (contato) {
11. $scope.contatos.push(angular.copy(contato));
12. delete $scope.contato;
13. };
14.
15. $scope.operadoras = ["Vivo", "Oi", "Tim"];
16. });
1. app.controller("listaTelefonicaCtrl", function ($scope, $http) {
2. $scope.titulo = "Lista Telefônica";
3.
4. $scope.contatos = [];
5.
6. $scope.carregarContatos = function () {
7. $http.get("/contatos").success();
8. };
9.
10. $scope.adicionarContato = function (contato) {
11. $scope.contatos.push(angular.copy(contato));
12. delete $scope.contato;
13. };
14.
15. $scope.operadoras = ["Vivo", "Oi", "Tim"];
16. });
1. app.controller("listaTelefonicaCtrl", function ($scope, $http) {
2. $scope.titulo = "Lista Telefônica";
3.
4. $scope.contatos = [];
5.
6. $scope.carregarContatos = function () {
7. $http.get("/contatos").success(function (data, status) {
8. });
9. };
10.
11. $scope.adicionarContato = function (contato) {
12. $scope.contatos.push(angular.copy(contato));
13. delete $scope.contato;
14. };
15.
16. $scope.operadoras = ["Vivo", "Oi", "Tim"];
17. });
1. app.controller("listaTelefonicaCtrl", function ($scope, $http) {
2. $scope.titulo = "Lista Telefônica";
3.
4. $scope.contatos = [];
5.
6. $scope.carregarContatos = function () {
7. $http.get("/contatos").success(function (data, status) {
8. $scope.contatos = data;
9. });
10. };
11.
12. $scope.adicionarContato = function (contato) {
13. $scope.contatos.push(angular.copy(contato));
14. delete $scope.contato;
15. };
16.
17. $scope.operadoras = ["Vivo", "Oi", "Tim"];
18. });
1. app.controller("listaTelefonicaCtrl", function ($scope, $http) {
2. $scope.titulo = "Lista Telefônica";
3.
4. $scope.contatos = [];
5.
6. $scope.carregarContatos = function () {
7. $http.get("/contatos").success(function (data, status) {
8. $scope.contatos = data;
9. }).error();
10. };
11.
12. $scope.adicionarContato = function (contato) {
13. $scope.contatos.push(angular.copy(contato));
14. delete $scope.contato;
15. };
16.
17. $scope.operadoras = ["Vivo", "Oi", "Tim"];
18. });
1. app.controller("listaTelefonicaCtrl", function ($scope, $http) {
2. $scope.titulo = "Lista Telefônica";
3.
4. $scope.contatos = [];
5.
6. $scope.carregarContatos = function () {
7. $http.get("/contatos").success(function (data, status) {
8. $scope.contatos = data;
9. }).error(function (data, status) {
10. });
11. };
12.
13. $scope.adicionarContato = function (contato) {
14. $scope.contatos.push(angular.copy(contato));
15. delete $scope.contato;
16. };
17.
18. $scope.operadoras = ["Vivo", "Oi", "Tim"];
19. });
1. app.controller("listaTelefonicaCtrl", function ($scope, $http) {
2. $scope.titulo = "Lista Telefônica";
3.
4. $scope.contatos = [];
5.
6. $scope.carregarContatos = function () {
7. $http.get("/contatos").success(function (data, status) {
8. $scope.contatos = data;
9. }).error(function (data, status) {
10. console.error(data);
11. });
12. };
13.
14. $scope.adicionarContato = function (contato) {
15. $scope.contatos.push(angular.copy(contato));
16. delete $scope.contato;
17. };
18.
19. $scope.operadoras = ["Vivo", "Oi", "Tim"];
20. });
1. app.controller("listaTelefonicaCtrl", function ($scope, $http) {
2. $scope.titulo = "Lista Telefônica";
3.
4. $scope.contatos = [];
5.
6. $scope.carregarContatos = function () {
7. $http.get("/contatos").success(function (data, status) {
8. $scope.contatos = data;
9. }).error(function (data, status) {
10. console.error(data);
11. });
12. };
13.
14. $scope.adicionarContato = function (contato) {
15. $scope.contatos.push(angular.copy(contato));
16. delete $scope.contato;
17. };
18.
19. $scope.operadoras = ["Vivo", "Oi", "Tim"];
20.
21. $scope.carregarContatos()
22. });
1. app.controller("listaTelefonicaCtrl", function ($scope, $http) {
2. $scope.titulo = "Lista Telefônica";
3.
4. $scope.contatos = [];
5.
6. $scope.carregarContatos = function () {
7. $http.get("/contatos").success(function (data, status) {
8. $scope.contatos = data;
9. }).error(function (data, status) {
10. console.error(data);
11. });
12. };
13.
14. $scope.adicionarContato = function (contato) {
15. $scope.contatos.push(angular.copy(contato));
16. delete $scope.contato;
17. };
18.
19. $scope.operadoras = ["Vivo", "Oi", "Tim"];
20.
21. $scope.carregarContatos()
22. });
1. app.controller("listaTelefonicaCtrl", function ($scope, $http) {
2. $scope.titulo = "Lista Telefônica";
3.
4. $scope.contatos = [];
5.
6. $scope.carregarContatos = function () {
7. $http.get("/contatos").success(function (data, status) {
8. $scope.contatos = data;
9. }).error(function (data, status) {
10. console.error(data);
11. });
12. };
13.
14. $scope.adicionarContato = function (contato) {
15.
16. delete $scope.contato;
17. };
18.
19. $scope.operadoras = ["Vivo", "Oi", "Tim"];
20.
21. $scope.carregarContatos()
22. });
1. app.controller("listaTelefonicaCtrl", function ($scope, $http) {
2. $scope.titulo = "Lista Telefônica";
3.
4. $scope.contatos = [];
5.
6. $scope.carregarContatos = function () {
7. $http.get("/contatos").success(function (data, status) {
8. $scope.contatos = data;
9. }).error(function (data, status) {
10. console.error(data);
11. });
12. };
13.
14. $scope.adicionarContato = function (contato) {
15. $http.post();
16. delete $scope.contato;
17. };
18.
19. $scope.operadoras = ["Vivo", "Oi", "Tim"];
20.
21. $scope.carregarContatos()
22. });
1. app.controller("listaTelefonicaCtrl", function ($scope, $http) {
2. $scope.titulo = "Lista Telefônica";
3.
4. $scope.contatos = [];
5.
6. $scope.carregarContatos = function () {
7. $http.get("/contatos").success(function (data, status) {
8. $scope.contatos = data;
9. }).error(function (data, status) {
10. console.error(data);
11. });
12. };
13.
14. $scope.adicionarContato = function (contato) {
15. $http.post("/contatos");
16. delete $scope.contato;
17. };
18.
19. $scope.operadoras = ["Vivo", "Oi", "Tim"];
20.
21. $scope.carregarContatos()
22. });
1. app.controller("listaTelefonicaCtrl", function ($scope, $http) {
2. $scope.titulo = "Lista Telefônica";
3.
4. $scope.contatos = [];
5.
6. $scope.carregarContatos = function () {
7. $http.get("/contatos").success(function (data, status) {
8. $scope.contatos = data;
9. }).error(function (data, status) {
10. console.error(data);
11. });
12. };
13.
14. $scope.adicionarContato = function (contato) {
15. $http.post("/contatos", contato);
16. delete $scope.contato;
17. };
18.
19. $scope.operadoras = ["Vivo", "Oi", "Tim"];
20.
21. $scope.carregarContatos()
22. });
1. app.controller("listaTelefonicaCtrl", function ($scope, $http) {
2. $scope.titulo = "Lista Telefônica";
3.
4. $scope.contatos = [];
5.
6. $scope.carregarContatos = function () {
7. $http.get("/contatos").success(function (data, status) {
8. $scope.contatos = data;
9. }).error(function (data, status) {
10. console.error(data);
11. });
12. };
13.
14. $scope.adicionarContato = function (contato) {
15. $http.post("/contatos", contato);
16. delete $scope.contato;
17. };
18.
19. $scope.operadoras = ["Vivo", "Oi", "Tim"];
20.
21. $scope.carregarContatos()
22. });
1. app.controller("listaTelefonicaCtrl", function ($scope, $http) {
2. $scope.titulo = "Lista Telefônica";
3.
4. $scope.contatos = [];
5.
6. $scope.carregarContatos = function () {
7. $http.get("/contatos").success(function (data, status) {
8. $scope.contatos = data;
9. }).error(function (data, status) {
10. console.error(data);
11. });
12. };
13.
14. $scope.adicionarContato = function (contato) {
15. $http.post("/contatos", contato);
16. delete $scope.contato;
17. };
18.
19. $scope.operadoras = ["Vivo", "Oi", "Tim"];
20.
21. $scope.carregarContatos()
22. });
1. app.controller("listaTelefonicaCtrl", function ($scope, $http) {
2. $scope.titulo = "Lista Telefônica";
3.
4. $scope.contatos = [];
5.
6. $scope.carregarContatos = function () {
7. $http.get("/contatos").success(function (data, status) {
8. $scope.contatos = data;
9. }).error(function (data, status) {
10. console.error(data);
11. });
12. };
13.
14. $scope.adicionarContato = function (contato) {
15. $http.post("/contatos", contato);
16. delete $scope.contato;
17. };
18.
19. $scope.operadoras = ["Vivo", "Oi", "Tim"];
20.
21. $scope.carregarContatos()
22. });
1. app.controller("listaTelefonicaCtrl", function ($scope, $http) {
2. $scope.titulo = "Lista Telefônica";
3.
4. $scope.contatos = [];
5.
6. $scope.carregarContatos = function () {
7. $http.get("/contatos").success(function (data, status) {
8. $scope.contatos = data;
9. }).error(function (data, status) {
10. console.error(data);
11. });
12. };
13.
14. $scope.adicionarContato = function (contato) {
15. $http.post("/contatos", contato).success(function (data, status) {
16. });
17. delete $scope.contato;
18. };
19.
20. $scope.operadoras = ["Vivo", "Oi", "Tim"];
21.
22. $scope.carregarContatos()
23. });
1. app.controller("listaTelefonicaCtrl", function ($scope, $http) {
2. $scope.titulo = "Lista Telefônica";
3.
4. $scope.contatos = [];
5.
6. $scope.carregarContatos = function () {
7. $http.get("/contatos").success(function (data, status) {
8. $scope.contatos = data;
9. }).error(function (data, status) {
10. console.error(data);
11. });
12. };
13.
14. $scope.adicionarContato = function (contato) {
15. $http.post("/contatos", contato).success(function (data, status) {
16. $scope.carregarContatos();
17. });
18. delete $scope.contato;
19. };
20.
21. $scope.operadoras = ["Vivo", "Oi", "Tim"];
22.
23. $scope.carregarContatos()
24. });
1. app.controller("listaTelefonicaCtrl", function ($scope, $http) {
2. $scope.titulo = "Lista Telefônica";
3.
4. $scope.contatos = [];
5.
6. $scope.carregarContatos = function () {
7. $http.get("/contatos").success(function (data, status) {
8. $scope.contatos = data;
9. }).error(function (data, status) {
10. console.error(data);
11. });
12. };
13.
14. $scope.adicionarContato = function (contato) {
15. $http.post("/contatos", contato).success(function (data, status) {
16. $scope.carregarContatos();
17. delete $scope.contato;
18. });
19. };
20.
21. $scope.operadoras = ["Vivo", "Oi", "Tim"];
22.
23. $scope.carregarContatos()
24. });
1. app.controller("listaTelefonicaCtrl", function ($scope, $http) {
2. $scope.titulo = "Lista Telefônica";
3.
4. $scope.contatos = [];
5.
6. $scope.carregarContatos = function () {
7. $http.get("/contatos").success(function (data, status) {
8. $scope.contatos = data;
9. }).error(function (data, status) {
10. console.error(data);
11. });
12. };
13.
14. $scope.adicionarContato = function (contato) {
15. $http.post("/contatos", contato).success(function (data, status) {
16. $scope.carregarContatos();
17. delete $scope.contato;
18. }).error(function (data, status) {
19. });
20. };
21.
22. $scope.operadoras = ["Vivo", "Oi", "Tim"];
23.
24. $scope.carregarContatos()
25. });
1. app.controller("listaTelefonicaCtrl", function ($scope, $http) {
2. $scope.titulo = "Lista Telefônica";
3.
4. $scope.contatos = [];
5.
6. $scope.carregarContatos = function () {
7. $http.get("/contatos").success(function (data, status) {
8. $scope.contatos = data;
9. }).error(function (data, status) {
10. console.error(data);
11. });
12. };
13.
14. $scope.adicionarContato = function (contato) {
15. $http.post("/contatos", contato).success(function (data, status) {
16. $scope.carregarContatos();
17. delete $scope.contato;
18. }).error(function (data, status) {
19. console.error(data);
20. });
21. };
22.
23. $scope.operadoras = ["Vivo", "Oi", "Tim"];
24.
25. $scope.carregarContatos()
26. });

Mais conteúdo relacionado

Mais procurados (20)

PDF
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
Rodrigo Branas
 
PPTX
Scope AngularJS
Rodrigo Branas
 
PPTX
Introdução ao AngularJS
Rodrigo Branas
 
PPTX
Introdução ao desenvolvimento de aplicações web
Rodrigo Branas
 
PPTX
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...
Rodrigo Branas
 
PPTX
Construindo Diretivas com AngularJS
Rodrigo Branas
 
PDF
Angular js
Bruno Catão
 
PPTX
Técnicas de Refactoring
Rodrigo Branas
 
PPTX
Introdução básica ao JavaScript
Carlos Eduardo Kadu
 
PDF
Java Web Fácil com VRaptor
Frederico Maia Arantes
 
PDF
Javascript aula 01 - visão geral
Cristiano Pires Martins
 
PPTX
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Daniel Makiyama
 
PDF
Material Design simples e rapido com AngularJS
Henrique Limas
 
PDF
Boas práticas de django
Filipe Ximenes
 
PDF
DOMinando JavaScript
Thiago Poiani
 
PDF
Desenvolvimento Front end (AngularJS e Bootstrap)
Julian Cesar
 
ODP
Construindo Sistemas Com Django
Marinho Brandão
 
PPT
Minicurso de JavaScript (Portuguese)
Bruno Grange
 
PPTX
Apresentação angular js
Raphael Ramos Monteiro
 
PPTX
Domain-Driven Design
Rodrigo Branas
 
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
Rodrigo Branas
 
Scope AngularJS
Rodrigo Branas
 
Introdução ao AngularJS
Rodrigo Branas
 
Introdução ao desenvolvimento de aplicações web
Rodrigo Branas
 
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...
Rodrigo Branas
 
Construindo Diretivas com AngularJS
Rodrigo Branas
 
Angular js
Bruno Catão
 
Técnicas de Refactoring
Rodrigo Branas
 
Introdução básica ao JavaScript
Carlos Eduardo Kadu
 
Java Web Fácil com VRaptor
Frederico Maia Arantes
 
Javascript aula 01 - visão geral
Cristiano Pires Martins
 
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Daniel Makiyama
 
Material Design simples e rapido com AngularJS
Henrique Limas
 
Boas práticas de django
Filipe Ximenes
 
DOMinando JavaScript
Thiago Poiani
 
Desenvolvimento Front end (AngularJS e Bootstrap)
Julian Cesar
 
Construindo Sistemas Com Django
Marinho Brandão
 
Minicurso de JavaScript (Portuguese)
Bruno Grange
 
Apresentação angular js
Raphael Ramos Monteiro
 
Domain-Driven Design
Rodrigo Branas
 

Destaque (20)

PPTX
Validando Formulários com AngularJS
Rodrigo Branas
 
PPTX
Utilizando diretivas com AngularJS
Rodrigo Branas
 
PPTX
Aplicando filtros com AngularJS
Rodrigo Branas
 
PPTX
Criando Filtros com AngularJS
Rodrigo Branas
 
PDF
Node.js - #6 - Core Modules - net - Rodrigo Branas
Rodrigo Branas
 
PPTX
Evoluindo a arquitetura de uma aplicação com AngularJS
Rodrigo Branas
 
PPTX
Grunt
Rodrigo Branas
 
PDF
HTTP Interceptors com AngularJS
Rodrigo Branas
 
PDF
Pysafet workflow and json library documentation
Víctor Bravo Bravo
 
ODT
Descargar datos con JSON en Android
★ Raúl Laza
 
PPTX
Testes Automatizados
Rodrigo Branas
 
PDF
Node.js - #4 - Timers - Rodrigo Branas
Rodrigo Branas
 
PDF
Node.js - #3 - Global Objects - Rodrigo Branas
Rodrigo Branas
 
PDF
The Web Development Eco-system with VSTS, ASP.NET 2.0 & Microsoft Ajax
Darren Sim
 
PDF
Node.js - #1 - Introdução - Rodrigo Branas
Rodrigo Branas
 
PDF
Node.js - #5 - Process - Rodrigo Branas
Rodrigo Branas
 
PPSX
Dynamic webpages using AJAX & JSON
Christiaan Rakowski
 
PDF
JSON and AJAX JumpStart
dominion
 
PPTX
AJAX and JSON
Julie Iskander
 
PDF
Node.js - #2 - Sistema de Módulos - Rodrigo Branas
Rodrigo Branas
 
Validando Formulários com AngularJS
Rodrigo Branas
 
Utilizando diretivas com AngularJS
Rodrigo Branas
 
Aplicando filtros com AngularJS
Rodrigo Branas
 
Criando Filtros com AngularJS
Rodrigo Branas
 
Node.js - #6 - Core Modules - net - Rodrigo Branas
Rodrigo Branas
 
Evoluindo a arquitetura de uma aplicação com AngularJS
Rodrigo Branas
 
HTTP Interceptors com AngularJS
Rodrigo Branas
 
Pysafet workflow and json library documentation
Víctor Bravo Bravo
 
Descargar datos con JSON en Android
★ Raúl Laza
 
Testes Automatizados
Rodrigo Branas
 
Node.js - #4 - Timers - Rodrigo Branas
Rodrigo Branas
 
Node.js - #3 - Global Objects - Rodrigo Branas
Rodrigo Branas
 
The Web Development Eco-system with VSTS, ASP.NET 2.0 & Microsoft Ajax
Darren Sim
 
Node.js - #1 - Introdução - Rodrigo Branas
Rodrigo Branas
 
Node.js - #5 - Process - Rodrigo Branas
Rodrigo Branas
 
Dynamic webpages using AJAX & JSON
Christiaan Rakowski
 
JSON and AJAX JumpStart
dominion
 
AJAX and JSON
Julie Iskander
 
Node.js - #2 - Sistema de Módulos - Rodrigo Branas
Rodrigo Branas
 
Anúncio

Semelhante a HTTP, JSON, REST e AJAX com AngularJS (20)

PPTX
Palestra Sobre REST
Paulo José Almeida
 
PDF
RESTful com json
Erko Bridee de Almeida Cabrera
 
PPT
Web Services Rest
Bruno Luiz Pereira da Silva
 
PDF
Novidades do JAX-RS 2.0
jesuinoPower
 
PDF
Construindo APIs RESTful com Spring
Mateus Malaquias
 
PPTX
Conhecendo o Novo REST Framework
Mario Guedes
 
PDF
JavaOne LATAM 2016 - Combinando AngularJS com Java EE
Rodrigo Cândido da Silva
 
PPTX
Integrando sua App ao Mundo via REST/JSON
Mario Guedes
 
PPTX
Rest
JugVale
 
ODP
Boas práticas no desenvolvimento de uma RESTful API
Fernando Camargo
 
ODP
Boas práticas no desenvolvimento de uma RESTful API
Fernando Camargo
 
PDF
Criando e consumindo webservice REST com PHP e JSON
Ambiente Livre
 
PDF
Criando e consumindo webservice REST com PHP e JSON
Marcio Junior Vieira
 
PDF
compreensão geral para estruturar uma api
dsfabiano451
 
PPTX
ExtJS - Jumpstart para o Grupo DevRioClaro
Daniel Da Cunha Bueno
 
PDF
Design de RESTful APIs
Fernando Camargo
 
PDF
Desenvolvimento de uma API RESTful com Java EE
Luan Felipe Knebel
 
PDF
Estudos Technocorp
ThiagoFortes8
 
PDF
Web service
Junior Moraes
 
PDF
Introdução APIs RESTful
Douglas V. Pasqua
 
Palestra Sobre REST
Paulo José Almeida
 
Web Services Rest
Bruno Luiz Pereira da Silva
 
Novidades do JAX-RS 2.0
jesuinoPower
 
Construindo APIs RESTful com Spring
Mateus Malaquias
 
Conhecendo o Novo REST Framework
Mario Guedes
 
JavaOne LATAM 2016 - Combinando AngularJS com Java EE
Rodrigo Cândido da Silva
 
Integrando sua App ao Mundo via REST/JSON
Mario Guedes
 
Rest
JugVale
 
Boas práticas no desenvolvimento de uma RESTful API
Fernando Camargo
 
Boas práticas no desenvolvimento de uma RESTful API
Fernando Camargo
 
Criando e consumindo webservice REST com PHP e JSON
Ambiente Livre
 
Criando e consumindo webservice REST com PHP e JSON
Marcio Junior Vieira
 
compreensão geral para estruturar uma api
dsfabiano451
 
ExtJS - Jumpstart para o Grupo DevRioClaro
Daniel Da Cunha Bueno
 
Design de RESTful APIs
Fernando Camargo
 
Desenvolvimento de uma API RESTful com Java EE
Luan Felipe Knebel
 
Estudos Technocorp
ThiagoFortes8
 
Web service
Junior Moraes
 
Introdução APIs RESTful
Douglas V. Pasqua
 
Anúncio

Mais de Rodrigo Branas (10)

PDF
Clean Architecture
Rodrigo Branas
 
PDF
#6 - Git - Desfazendo as coisas
Rodrigo Branas
 
PDF
#1 - Git - Introdução
Rodrigo Branas
 
PDF
#5 - Git - Contribuindo com um repositório remoto
Rodrigo Branas
 
PDF
#4 - Git - Stash
Rodrigo Branas
 
PDF
#3 - Git - Branching e Merging
Rodrigo Branas
 
PDF
#2 - Git - DAG
Rodrigo Branas
 
PPTX
JavaScript - Date
Rodrigo Branas
 
PPTX
JavaScript - Expressões Regulares
Rodrigo Branas
 
PPTX
Bower
Rodrigo Branas
 
Clean Architecture
Rodrigo Branas
 
#6 - Git - Desfazendo as coisas
Rodrigo Branas
 
#1 - Git - Introdução
Rodrigo Branas
 
#5 - Git - Contribuindo com um repositório remoto
Rodrigo Branas
 
#4 - Git - Stash
Rodrigo Branas
 
#3 - Git - Branching e Merging
Rodrigo Branas
 
#2 - Git - DAG
Rodrigo Branas
 
JavaScript - Date
Rodrigo Branas
 
JavaScript - Expressões Regulares
Rodrigo Branas
 

Último (6)

PPTX
5 Critérios para seleção do objeto de estudo.pptx
Eduardo Corrêa
 
PDF
Estudos DAC - projeto de arquitetura futurista
ra189223
 
PDF
Ceritificado Imersão SOC HackOne Sab/Dom.pdf
RodrigoMori7
 
PDF
Aulas Extras - O que é e por que Aprender e Utilizar.pdf
fmartinsss
 
DOCX
150 PMBOK 7 Scenario-Based PMP Exam Questions and Answers.docx
Marcelo Cruz
 
PPTX
Windows 11 Apostila do Básico ao Avançado
deividcosimo1
 
5 Critérios para seleção do objeto de estudo.pptx
Eduardo Corrêa
 
Estudos DAC - projeto de arquitetura futurista
ra189223
 
Ceritificado Imersão SOC HackOne Sab/Dom.pdf
RodrigoMori7
 
Aulas Extras - O que é e por que Aprender e Utilizar.pdf
fmartinsss
 
150 PMBOK 7 Scenario-Based PMP Exam Questions and Answers.docx
Marcelo Cruz
 
Windows 11 Apostila do Básico ao Avançado
deividcosimo1
 

HTTP, JSON, REST e AJAX com AngularJS

  • 1. Rodrigo Branas – @rodrigobranas - http://www.agilecode.com.br HTTP, JSON, REST e AJAX com AngularJS
  • 2. “Transformar equipes de desenvolvimento de software” http://www.agilecode.com.br
  • 4. Rodrigo Branas [email protected] http://www.agilecode.com.br • Desenvolvendo Software na Gennera • Criando treinamentos na Agile Code • Escrevendo na Java Magazine e PacktPub • Palestrando sobre desenvolvimento de software em eventos, universidades e empresas
  • 5. Certificações Formação Acadêmica Ciências da Computação – UFSC Gerenciamento de Projetos - FGV SCJA, SCJP, SCJD, SCWCD, SCBCD, PMP, MCP e CSM Experiência Há mais de 12 anos desenvolvendo software na plataforma Java com as empresas: EDS, HP, NET, Citibank, GM, Dígitro, Softplan, OnCast, Senai, VALE, RBS, Unimed, Globalcode, V.Office, Suntech, WPlex e Gennera.
  • 6. • Há mais de 5 anos liderando pessoas. • Mais de 2000 horas em sala de aula. • Mais de 100 apresentações em eventos. • 6 artigos escritos para revistas. • 1 livro. • Mais de 500 profissionais treinados. • Criação de 22 palestras. • Criação de 10 treinamentos. • Criação de mais de 3.000 slides.
  • 7. O que é um protocolo de comunicação?
  • 8. Alguns protocolos famosos: • TCP – Transmission Control Protocol • UDP – User Datagram Protocol • ICMP – Internet Control Message Protocol • POP3 – Post Office Protocol • SMTP – Simple Mail Transfer Protocol • FTP – File Transfer Protocol • IMAP – Internet Message Access Protocol • HTTP – Hypertext Transfer Protocol
  • 13. GET /gformulario/portadores?nocache=1396977196206 HTTP/1.1 Host: localhost:8080 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:27.0) Gecko/20100101 Firefox/27.0 Accept: application/json, text/plain, */* Accept-Language: pt-BR,pt;q=0.8,en-US;q=0.5,en;q=0.3 Accept-Encoding: gzip, deflate Cookie: JSESSIONID=FA4FF827FF804ED0095F20F61054549C; Requisição
  • 14. HTTP/1.1 200 OK Server: Apache-Coyote/1.1 X-Powered-By: Servlet 2.4; JBoss-4.2.3.GA (build: SVNTag=JBoss_4_2_3_GA date=200807181417)/JBossWeb-2.0 Content-Type: application/json;charset=UTF-8 Transfer-Encoding: chunked Date: Tue, 08 Apr 2014 17:13:16 GMT [{"dataCriacao":1385989325053,"dataAtualizacao":1385989325053,"id":1,"banco":"3 41","agencia":"999","conta":"999999","carteira":"10","codigoCedente":"","faixaInicio ":100000,"faixaFim":200000,"faixaAtual":100006}] Resposta
  • 15. Métodos do protocolo HTTP • GET • POST • PUT • DELETE • HEAD • TRACE • OPTIONS • CONNECT
  • 16. Que tipo de conteúdo o protocolo HTTP retorna?
  • 17. HTML
  • 18. HTML não é nada bom para integrar sistemas!
  • 21. XML, SOAP, WSDL e UDDI
  • 22. <?xml version="1.0"?> <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"> <soap:Header> </soap:Header> <soap:Body> <m:GetStockPrice xmlns:m="http://www.example.org/stock"> <m:StockName>IBM</m:StockName> </m:GetStockPrice> </soap:Body> </soap:Envelope> Conteúdo de uma requisição SOAP
  • 26. [ { "dataCriacao": 1385989325053, "dataAtualizacao": 1385989325053, "id": 1, "cnpj": "02696435000148", "banco": "341", "agencia": "1573", "conta": "248844", "carteira": "175", "faixaInicio": 100000, "faixaFim": 200000, "faixaAtual": 100006, } ] Conteúdo de uma resposta JSON
  • 27. Como podemos fazer para acessar o Web Service?
  • 30. Princípios de um Web Service REST • Identifique as entidades envolvidas
  • 31. Princípios de um Web Service REST • Identifique as entidades envolvidas • Crie as rotas para cada entidade
  • 32. Princípios de um Web Service REST • Identifique as entidades envolvidas • Crie as rotas para cada entidade • Utilize substantivos para cada rota, evitando o uso de verbos
  • 33. Princípios de um Web Service REST • Identifique as entidades envolvidas • Crie as rotas para cada entidade • Utilize substantivos para cada rota, evitando o uso de verbos • Categorize cada entidade em relação aos métodos disponíveis (GET, POST, PUT e DELETE)
  • 34. Princípios de um Web Service REST • Identifique as entidades envolvidas • Crie as rotas para cada entidade • Utilize substantivos para cada rota, evitando o uso de verbos • Categorize cada entidade em relação aos métodos disponíveis (GET, POST, PUT e DELETE) • Todos os recursos disponíveis utilizando o método GET não devem ter efeitos colaterais
  • 35. Princípios de um Web Service REST • Identifique as entidades envolvidas • Crie as rotas para cada entidade • Utilize substantivos para cada rota, evitando o uso de verbos • Categorize cada entidade em relação aos métodos disponíveis (GET, POST, PUT e DELETE) • Todos os recursos disponíveis utilizando o método GET não devem ter efeitos colaterais • Forneça a possibilidade de explorar cada recurso disponível, navegando em sua estrutura hierarquica
  • 36. Princípios de um Web Service REST • Identifique as entidades envolvidas • Crie as rotas para cada entidade • Utilize substantivos para cada rota, evitando o uso de verbos • Categorize cada entidade em relação aos métodos disponíveis (GET, POST, PUT e DELETE) • Todos os recursos disponíveis utilizando o método GET não devem ter efeitos colaterais • Forneça a possibilidade de explorar cada recurso disponível, navegando em sua estrutura hierarquica • Documente a API e disponibilize para todos os envolvidos no projeto
  • 37. Criando um Web Service REST com Node.js e Express
  • 39. Instando o Express package.json { "name": "contatos", "description": "", "version": "0.0.1", "dependencies": { "express": "3.x" } } npm install
  • 40. 1. var express = require('express');
  • 41. 1. var express = require('express'); 2. var app = express();
  • 42. 1. var express = require('express'); 2. var app = express(); 3. 4. app.get('/contatos', function(req, res) { 5. });
  • 43. 1. var express = require('express'); 2. var app = express(); 3. 4. app.get('/contatos', function(req, res) { 5. var contatos = []; 6. });
  • 44. 1. var express = require('express'); 2. var app = express(); 3. 4. app.get('/contatos', function(req, res) { 5. var contatos = [{nome: "João", telefone: "98766789"}]; 6. });
  • 45. 1. var express = require('express'); 2. var app = express(); 3. 4. app.get('/contatos', function(req, res) { 5. var contatos = [{nome: "João", telefone: "98766789"}, 6. {nome: "Pedro", telefone: "99879999"}]; 7. });
  • 46. 1. var express = require('express'); 2. var app = express(); 3. 4. app.get('/contatos', function(req, res) { 5. var contatos = [{nome: "João", telefone: "98766789"}, 6. {nome: "Pedro", telefone: "99879999"}, 7. {nome: "Mateus", telefone: "99998888"}]; 8. });
  • 47. 1. var express = require('express'); 2. var app = express(); 3. 4. app.get('/contatos', function(req, res) { 5. var contatos = [{nome: "João", telefone: "98766789"}, 6. {nome: "Pedro", telefone: "99879999"}, 7. {nome: "Mateus", telefone: "99998888"}]; 8. res.json(contatos); 9. });
  • 48. 1. var express = require('express'); 2. var app = express(); 3. 4. app.get('/contatos', function(req, res) { 5. var contatos = [{nome: "João", telefone: "98766789"}, 6. {nome: "Pedro", telefone: "99879999"}, 7. {nome: "Mateus", telefone: "99998888"}]; 8. res.json(contatos); 9. }); 10. 11. app.listen(3412);
  • 50. 1. var express = require('express'); 2. var app = express(); 3. 4. app.get('/contatos', function(req, res) { 5. var contatos = [{nome: "João", telefone: "98766789"}, 6. {nome: "Pedro", telefone: "99879999"}, 7. {nome: "Mateus", telefone: "99998888"}]; 8. res.json(contatos); 9. }); 10. 11. app.listen(3412);
  • 51. 1. var express = require('express'); 2. var app = express(); 3. 4. var contatos = [{nome: "João", telefone: "98766789"}, 5. {nome: "Pedro", telefone: "99879999"}, 6. {nome: "Mateus", telefone: "99998888"}]; 7. app.get('/contatos', function(req, res) { 8. res.json(contatos); 9. }); 10. 11. app.listen(3412);
  • 52. 1. var express = require('express'); 2. var app = express(); 3. 4. var contatos = [{nome: "João", telefone: "98766789"}, 5. {nome: "Pedro", telefone: "99879999"}, 6. {nome: "Mateus", telefone: "99998888"}]; 7. 8. app.get('/contatos', function(req, res) { 9. res.json(contatos); 10. }); 11. 12. app.listen(3412);
  • 53. 1. var express = require('express'); 2. var app = express(); 3. 4. var contatos = [{nome: "João", telefone: "98766789"}, 5. {nome: "Pedro", telefone: "99879999"}, 6. {nome: "Mateus", telefone: "99998888"}]; 7. 8. app.get('/contatos', function(req, res) { 9. res.json(contatos); 10. }); 11. 12. app.post('/contatos', function(req, res) { 13. }); 14. 15. app.listen(3412);
  • 54. 1. var express = require('express'); 2. var app = express(); 3. 4. var contatos = [{nome: "João", telefone: "98766789"}, 5. {nome: "Pedro", telefone: "99879999"}, 6. {nome: "Mateus", telefone: "99998888"}]; 7. 8. app.get('/contatos', function(req, res) { 9. res.json(contatos); 10. }); 11. 12. app.post('/contatos', function(req, res) { 13. var contato = req.body; 14. }); 15. 16. app.listen(3412);
  • 55. 1. var express = require('express'); 2. var app = express(); 3. 4. var contatos = [{nome: "João", telefone: "98766789"}, 5. {nome: "Pedro", telefone: "99879999"}, 6. {nome: "Mateus", telefone: "99998888"}]; 7. 8. app.get('/contatos', function(req, res) { 9. res.json(contatos); 10. }); 11. 12. app.post('/contatos', function(req, res) { 13. var contato = req.body; 14. contatos.push(contato); 15. }); 16. 17. app.listen(3412);
  • 56. 1. var express = require('express'); 2. var app = express(); 3. 4. var contatos = [{nome: "João", telefone: "98766789"}, 5. {nome: "Pedro", telefone: "99879999"}, 6. {nome: "Mateus", telefone: "99998888"}]; 7. 8. app.get('/contatos', function(req, res) { 9. res.json(contatos); 10. }); 11. 12. app.post('/contatos', function(req, res) { 13. var contato = req.body; 14. contatos.push(contato); 15. res.json(true); 16. }); 17. 18. app.listen(3412);
  • 57. 1. var express = require('express'); 2. var app = express(); 3. app.use(express.bodyParser()); 4. 5. var contatos = [{nome: "João", telefone: "98766789"}, 6. {nome: "Pedro", telefone: "99879999"}, 7. {nome: "Mateus", telefone: "99998888"}]; 8. 9. app.get('/contatos', function(req, res) { 10. res.json(contatos); 11. }); 12. 13. app.post('/contatos', function(req, res) { 14. var contato = req.body; 15. contatos.push(contato); 16. res.json(true); 17. }); 18. 19. app.listen(3412);
  • 58. 1. var express = require('express'); 2. var app = express(); 3. app.use(express.bodyParser()); 4. app.use(express.static(__dirname + '/public')); 5. 6. var contatos = [{nome: "João", telefone: "98766789"}, 7. {nome: "Pedro", telefone: "99879999"}, 8. {nome: "Mateus", telefone: "99998888"}]; 9. 10. app.get('/contatos', function(req, res) { 11. res.json(contatos); 12. }); 13. 14. app.post('/contatos', function(req, res) { 15. var contato = req.body; 16. contatos.push(contato); 17. res.json(true); 18. }); 19. 20. app.listen(3412);
  • 59. Consumindo um Web Service com AJAX no AngularJS
  • 60. Como podemos nos comunicar por HTTP a partir do browser?
  • 62. $http O serviço $http realiza a comunicação por meio do objeto XMLHttpRequest. Podemos utilizar os seguintes métodos: • get (url, config) • post (url, data, config) • put (url, data, config) • delete (url, config) • head (url, config) • jsonp (url, config)
  • 63. 1. app.controller("listaTelefonicaCtrl", function ($scope) { 2. $scope.titulo = "Lista Telefônica"; 3. 4. $scope.contatos = [{nome: "Pedro", telefone: "99991010"}, 5. {nome: "André", telefone: "99767899"}, 6. {nome: "Carlos", telefone: "99987689"}]; 7. 8. $scope.adicionarContato = function (contato) { 9. $scope.contatos.push(angular.copy(contato)); 10. delete $scope.contato; 11. }; 12. 13. $scope.operadoras = ["Vivo", "Oi", "Tim"]; 14. });
  • 64. 1. app.controller("listaTelefonicaCtrl", function ($scope) { 2. $scope.titulo = "Lista Telefônica"; 3. 4. $scope.contatos = [{nome: "Pedro", telefone: "99991010"}, 5. {nome: "André", telefone: "99767899"}, 6. {nome: "Carlos", telefone: "99987689"}]; 7. 8. $scope.adicionarContato = function (contato) { 9. $scope.contatos.push(angular.copy(contato)); 10. delete $scope.contato; 11. }; 12. 13. $scope.operadoras = ["Vivo", "Oi", "Tim"]; 14. });
  • 65. 1. app.controller("listaTelefonicaCtrl", function ($scope) { 2. $scope.titulo = "Lista Telefônica"; 3. 4. $scope.contatos = []; 5. 6. $scope.adicionarContato = function (contato) { 7. $scope.contatos.push(angular.copy(contato)); 8. delete $scope.contato; 9. }; 10. 11. $scope.operadoras = ["Vivo", "Oi", "Tim"]; 12. });
  • 66. 1. app.controller("listaTelefonicaCtrl", function ($scope) { 2. $scope.titulo = "Lista Telefônica"; 3. 4. $scope.contatos = []; 5. 6. $scope.adicionarContato = function (contato) { 7. $scope.contatos.push(angular.copy(contato)); 8. delete $scope.contato; 9. }; 10. 11. $scope.operadoras = ["Vivo", "Oi", "Tim"]; 12. });
  • 67. 1. app.controller("listaTelefonicaCtrl", function ($scope) { 2. $scope.titulo = "Lista Telefônica"; 3. 4. $scope.contatos = []; 5. 6. $scope.carregarContatos = function () { 7. }; 8. 9. $scope.adicionarContato = function (contato) { 10. $scope.contatos.push(angular.copy(contato)); 11. delete $scope.contato; 12. }; 13. 14. $scope.operadoras = ["Vivo", "Oi", "Tim"]; 15. });
  • 68. 1. app.controller("listaTelefonicaCtrl", function ($scope, $http) { 2. $scope.titulo = "Lista Telefônica"; 3. 4. $scope.contatos = []; 5. 6. $scope.carregarContatos = function () { 7. }; 8. 9. $scope.adicionarContato = function (contato) { 10. $scope.contatos.push(angular.copy(contato)); 11. delete $scope.contato; 12. }; 13. 14. $scope.operadoras = ["Vivo", "Oi", "Tim"]; 15. });
  • 69. 1. app.controller("listaTelefonicaCtrl", function ($scope, $http) { 2. $scope.titulo = "Lista Telefônica"; 3. 4. $scope.contatos = []; 5. 6. $scope.carregarContatos = function () { 7. $http.get(); 8. }; 9. 10. $scope.adicionarContato = function (contato) { 11. $scope.contatos.push(angular.copy(contato)); 12. delete $scope.contato; 13. }; 14. 15. $scope.operadoras = ["Vivo", "Oi", "Tim"]; 16. });
  • 70. 1. app.controller("listaTelefonicaCtrl", function ($scope, $http) { 2. $scope.titulo = "Lista Telefônica"; 3. 4. $scope.contatos = []; 5. 6. $scope.carregarContatos = function () { 7. $http.get("/contatos"); 8. }; 9. 10. $scope.adicionarContato = function (contato) { 11. $scope.contatos.push(angular.copy(contato)); 12. delete $scope.contato; 13. }; 14. 15. $scope.operadoras = ["Vivo", "Oi", "Tim"]; 16. });
  • 71. 1. app.controller("listaTelefonicaCtrl", function ($scope, $http) { 2. $scope.titulo = "Lista Telefônica"; 3. 4. $scope.contatos = []; 5. 6. $scope.carregarContatos = function () { 7. $http.get("/contatos").success(); 8. }; 9. 10. $scope.adicionarContato = function (contato) { 11. $scope.contatos.push(angular.copy(contato)); 12. delete $scope.contato; 13. }; 14. 15. $scope.operadoras = ["Vivo", "Oi", "Tim"]; 16. });
  • 72. 1. app.controller("listaTelefonicaCtrl", function ($scope, $http) { 2. $scope.titulo = "Lista Telefônica"; 3. 4. $scope.contatos = []; 5. 6. $scope.carregarContatos = function () { 7. $http.get("/contatos").success(function (data, status) { 8. }); 9. }; 10. 11. $scope.adicionarContato = function (contato) { 12. $scope.contatos.push(angular.copy(contato)); 13. delete $scope.contato; 14. }; 15. 16. $scope.operadoras = ["Vivo", "Oi", "Tim"]; 17. });
  • 73. 1. app.controller("listaTelefonicaCtrl", function ($scope, $http) { 2. $scope.titulo = "Lista Telefônica"; 3. 4. $scope.contatos = []; 5. 6. $scope.carregarContatos = function () { 7. $http.get("/contatos").success(function (data, status) { 8. $scope.contatos = data; 9. }); 10. }; 11. 12. $scope.adicionarContato = function (contato) { 13. $scope.contatos.push(angular.copy(contato)); 14. delete $scope.contato; 15. }; 16. 17. $scope.operadoras = ["Vivo", "Oi", "Tim"]; 18. });
  • 74. 1. app.controller("listaTelefonicaCtrl", function ($scope, $http) { 2. $scope.titulo = "Lista Telefônica"; 3. 4. $scope.contatos = []; 5. 6. $scope.carregarContatos = function () { 7. $http.get("/contatos").success(function (data, status) { 8. $scope.contatos = data; 9. }).error(); 10. }; 11. 12. $scope.adicionarContato = function (contato) { 13. $scope.contatos.push(angular.copy(contato)); 14. delete $scope.contato; 15. }; 16. 17. $scope.operadoras = ["Vivo", "Oi", "Tim"]; 18. });
  • 75. 1. app.controller("listaTelefonicaCtrl", function ($scope, $http) { 2. $scope.titulo = "Lista Telefônica"; 3. 4. $scope.contatos = []; 5. 6. $scope.carregarContatos = function () { 7. $http.get("/contatos").success(function (data, status) { 8. $scope.contatos = data; 9. }).error(function (data, status) { 10. }); 11. }; 12. 13. $scope.adicionarContato = function (contato) { 14. $scope.contatos.push(angular.copy(contato)); 15. delete $scope.contato; 16. }; 17. 18. $scope.operadoras = ["Vivo", "Oi", "Tim"]; 19. });
  • 76. 1. app.controller("listaTelefonicaCtrl", function ($scope, $http) { 2. $scope.titulo = "Lista Telefônica"; 3. 4. $scope.contatos = []; 5. 6. $scope.carregarContatos = function () { 7. $http.get("/contatos").success(function (data, status) { 8. $scope.contatos = data; 9. }).error(function (data, status) { 10. console.error(data); 11. }); 12. }; 13. 14. $scope.adicionarContato = function (contato) { 15. $scope.contatos.push(angular.copy(contato)); 16. delete $scope.contato; 17. }; 18. 19. $scope.operadoras = ["Vivo", "Oi", "Tim"]; 20. });
  • 77. 1. app.controller("listaTelefonicaCtrl", function ($scope, $http) { 2. $scope.titulo = "Lista Telefônica"; 3. 4. $scope.contatos = []; 5. 6. $scope.carregarContatos = function () { 7. $http.get("/contatos").success(function (data, status) { 8. $scope.contatos = data; 9. }).error(function (data, status) { 10. console.error(data); 11. }); 12. }; 13. 14. $scope.adicionarContato = function (contato) { 15. $scope.contatos.push(angular.copy(contato)); 16. delete $scope.contato; 17. }; 18. 19. $scope.operadoras = ["Vivo", "Oi", "Tim"]; 20. 21. $scope.carregarContatos() 22. });
  • 78. 1. app.controller("listaTelefonicaCtrl", function ($scope, $http) { 2. $scope.titulo = "Lista Telefônica"; 3. 4. $scope.contatos = []; 5. 6. $scope.carregarContatos = function () { 7. $http.get("/contatos").success(function (data, status) { 8. $scope.contatos = data; 9. }).error(function (data, status) { 10. console.error(data); 11. }); 12. }; 13. 14. $scope.adicionarContato = function (contato) { 15. $scope.contatos.push(angular.copy(contato)); 16. delete $scope.contato; 17. }; 18. 19. $scope.operadoras = ["Vivo", "Oi", "Tim"]; 20. 21. $scope.carregarContatos() 22. });
  • 79. 1. app.controller("listaTelefonicaCtrl", function ($scope, $http) { 2. $scope.titulo = "Lista Telefônica"; 3. 4. $scope.contatos = []; 5. 6. $scope.carregarContatos = function () { 7. $http.get("/contatos").success(function (data, status) { 8. $scope.contatos = data; 9. }).error(function (data, status) { 10. console.error(data); 11. }); 12. }; 13. 14. $scope.adicionarContato = function (contato) { 15. 16. delete $scope.contato; 17. }; 18. 19. $scope.operadoras = ["Vivo", "Oi", "Tim"]; 20. 21. $scope.carregarContatos() 22. });
  • 80. 1. app.controller("listaTelefonicaCtrl", function ($scope, $http) { 2. $scope.titulo = "Lista Telefônica"; 3. 4. $scope.contatos = []; 5. 6. $scope.carregarContatos = function () { 7. $http.get("/contatos").success(function (data, status) { 8. $scope.contatos = data; 9. }).error(function (data, status) { 10. console.error(data); 11. }); 12. }; 13. 14. $scope.adicionarContato = function (contato) { 15. $http.post(); 16. delete $scope.contato; 17. }; 18. 19. $scope.operadoras = ["Vivo", "Oi", "Tim"]; 20. 21. $scope.carregarContatos() 22. });
  • 81. 1. app.controller("listaTelefonicaCtrl", function ($scope, $http) { 2. $scope.titulo = "Lista Telefônica"; 3. 4. $scope.contatos = []; 5. 6. $scope.carregarContatos = function () { 7. $http.get("/contatos").success(function (data, status) { 8. $scope.contatos = data; 9. }).error(function (data, status) { 10. console.error(data); 11. }); 12. }; 13. 14. $scope.adicionarContato = function (contato) { 15. $http.post("/contatos"); 16. delete $scope.contato; 17. }; 18. 19. $scope.operadoras = ["Vivo", "Oi", "Tim"]; 20. 21. $scope.carregarContatos() 22. });
  • 82. 1. app.controller("listaTelefonicaCtrl", function ($scope, $http) { 2. $scope.titulo = "Lista Telefônica"; 3. 4. $scope.contatos = []; 5. 6. $scope.carregarContatos = function () { 7. $http.get("/contatos").success(function (data, status) { 8. $scope.contatos = data; 9. }).error(function (data, status) { 10. console.error(data); 11. }); 12. }; 13. 14. $scope.adicionarContato = function (contato) { 15. $http.post("/contatos", contato); 16. delete $scope.contato; 17. }; 18. 19. $scope.operadoras = ["Vivo", "Oi", "Tim"]; 20. 21. $scope.carregarContatos() 22. });
  • 83. 1. app.controller("listaTelefonicaCtrl", function ($scope, $http) { 2. $scope.titulo = "Lista Telefônica"; 3. 4. $scope.contatos = []; 5. 6. $scope.carregarContatos = function () { 7. $http.get("/contatos").success(function (data, status) { 8. $scope.contatos = data; 9. }).error(function (data, status) { 10. console.error(data); 11. }); 12. }; 13. 14. $scope.adicionarContato = function (contato) { 15. $http.post("/contatos", contato); 16. delete $scope.contato; 17. }; 18. 19. $scope.operadoras = ["Vivo", "Oi", "Tim"]; 20. 21. $scope.carregarContatos() 22. });
  • 84. 1. app.controller("listaTelefonicaCtrl", function ($scope, $http) { 2. $scope.titulo = "Lista Telefônica"; 3. 4. $scope.contatos = []; 5. 6. $scope.carregarContatos = function () { 7. $http.get("/contatos").success(function (data, status) { 8. $scope.contatos = data; 9. }).error(function (data, status) { 10. console.error(data); 11. }); 12. }; 13. 14. $scope.adicionarContato = function (contato) { 15. $http.post("/contatos", contato); 16. delete $scope.contato; 17. }; 18. 19. $scope.operadoras = ["Vivo", "Oi", "Tim"]; 20. 21. $scope.carregarContatos() 22. });
  • 85. 1. app.controller("listaTelefonicaCtrl", function ($scope, $http) { 2. $scope.titulo = "Lista Telefônica"; 3. 4. $scope.contatos = []; 5. 6. $scope.carregarContatos = function () { 7. $http.get("/contatos").success(function (data, status) { 8. $scope.contatos = data; 9. }).error(function (data, status) { 10. console.error(data); 11. }); 12. }; 13. 14. $scope.adicionarContato = function (contato) { 15. $http.post("/contatos", contato); 16. delete $scope.contato; 17. }; 18. 19. $scope.operadoras = ["Vivo", "Oi", "Tim"]; 20. 21. $scope.carregarContatos() 22. });
  • 86. 1. app.controller("listaTelefonicaCtrl", function ($scope, $http) { 2. $scope.titulo = "Lista Telefônica"; 3. 4. $scope.contatos = []; 5. 6. $scope.carregarContatos = function () { 7. $http.get("/contatos").success(function (data, status) { 8. $scope.contatos = data; 9. }).error(function (data, status) { 10. console.error(data); 11. }); 12. }; 13. 14. $scope.adicionarContato = function (contato) { 15. $http.post("/contatos", contato).success(function (data, status) { 16. }); 17. delete $scope.contato; 18. }; 19. 20. $scope.operadoras = ["Vivo", "Oi", "Tim"]; 21. 22. $scope.carregarContatos() 23. });
  • 87. 1. app.controller("listaTelefonicaCtrl", function ($scope, $http) { 2. $scope.titulo = "Lista Telefônica"; 3. 4. $scope.contatos = []; 5. 6. $scope.carregarContatos = function () { 7. $http.get("/contatos").success(function (data, status) { 8. $scope.contatos = data; 9. }).error(function (data, status) { 10. console.error(data); 11. }); 12. }; 13. 14. $scope.adicionarContato = function (contato) { 15. $http.post("/contatos", contato).success(function (data, status) { 16. $scope.carregarContatos(); 17. }); 18. delete $scope.contato; 19. }; 20. 21. $scope.operadoras = ["Vivo", "Oi", "Tim"]; 22. 23. $scope.carregarContatos() 24. });
  • 88. 1. app.controller("listaTelefonicaCtrl", function ($scope, $http) { 2. $scope.titulo = "Lista Telefônica"; 3. 4. $scope.contatos = []; 5. 6. $scope.carregarContatos = function () { 7. $http.get("/contatos").success(function (data, status) { 8. $scope.contatos = data; 9. }).error(function (data, status) { 10. console.error(data); 11. }); 12. }; 13. 14. $scope.adicionarContato = function (contato) { 15. $http.post("/contatos", contato).success(function (data, status) { 16. $scope.carregarContatos(); 17. delete $scope.contato; 18. }); 19. }; 20. 21. $scope.operadoras = ["Vivo", "Oi", "Tim"]; 22. 23. $scope.carregarContatos() 24. });
  • 89. 1. app.controller("listaTelefonicaCtrl", function ($scope, $http) { 2. $scope.titulo = "Lista Telefônica"; 3. 4. $scope.contatos = []; 5. 6. $scope.carregarContatos = function () { 7. $http.get("/contatos").success(function (data, status) { 8. $scope.contatos = data; 9. }).error(function (data, status) { 10. console.error(data); 11. }); 12. }; 13. 14. $scope.adicionarContato = function (contato) { 15. $http.post("/contatos", contato).success(function (data, status) { 16. $scope.carregarContatos(); 17. delete $scope.contato; 18. }).error(function (data, status) { 19. }); 20. }; 21. 22. $scope.operadoras = ["Vivo", "Oi", "Tim"]; 23. 24. $scope.carregarContatos() 25. });
  • 90. 1. app.controller("listaTelefonicaCtrl", function ($scope, $http) { 2. $scope.titulo = "Lista Telefônica"; 3. 4. $scope.contatos = []; 5. 6. $scope.carregarContatos = function () { 7. $http.get("/contatos").success(function (data, status) { 8. $scope.contatos = data; 9. }).error(function (data, status) { 10. console.error(data); 11. }); 12. }; 13. 14. $scope.adicionarContato = function (contato) { 15. $http.post("/contatos", contato).success(function (data, status) { 16. $scope.carregarContatos(); 17. delete $scope.contato; 18. }).error(function (data, status) { 19. console.error(data); 20. }); 21. }; 22. 23. $scope.operadoras = ["Vivo", "Oi", "Tim"]; 24. 25. $scope.carregarContatos() 26. });

Notas do Editor

  • #17: Telégrafo - 1836