Web Services

Paginação com web services

Posted by rlecheta on junho 27, 2016
Tutorial, Web Services / 4 Comments

Olá pessoal

Sempre recebo perguntas de como fazer paginação ao fazer um web service, pois no meu livro de Web Services os exemplos sempre retornam todos os registros do banco de dados.

rest

Por exemplo, neste web service é retornado todos os carros do servidor:

http://livrowebservices.com.br/rest/carros

E para quem leu o livro de REST, sabe que podemos buscar os carros por tipo, dentre outras buscas, exemplo:

http://livrowebservices.com.br/rest/carros/tipo/classicos

http://livrowebservices.com.br/rest/carros/tipo/esportivos

http://livrowebservices.com.br/rest/carros/tipo/luxo

Mas e se existir 1 milhão de registros no banco de dados? Neste caso o recomendado é retornar os registros paginados, por exemplo de 10 em 10, ou 20 em 20, conforme a necessidade.

Fazer isso é simples, então se você tem o código-fonte do projeto RESTful dos carros, é só fazer 2 pequenas alterações:

Na classe CarrosResource, tem um exemplo do tipo GET configurado, o qual retorna todos os carros no formato JSON, lembra-se?

@GET
public List<Carro> get() {
	List<Carro> carros = carroService.getCarros();
	return carros;
}

O que podemos fazer é adicionar 2 parâmetros. Um deles para indicar a página que você está solicitando e outro para indicar a quantidade de registros que devem ser retornados.

Exemplo:

@GET
@Path("/page/{page}/max/{max}")
public List<Carro> get(@PathParam("page") int page,@PathParam("max") int max) {
	List<Carro> carros = carroService.getCarros(page,max);
	return carros;
}

Isso vai criar os seguintes links do web service:

1ª página: http://livrowebservices.com.br/rest/carros/page/0/max/5

2ª página: http://livrowebservices.com.br/rest/carros/page/1/max/5

3ª página: http://livrowebservices.com.br/rest/carros/page/2/max/5

Veja que a 1ª página começa em zero (0) e neste exemplo solicitei que o servidor retorne sempre 5 carros.

E por aí vai…

Para o exemplo compilar, crie o seguinte método na classe CarroDAO.

public List<Carro> getCarros(int page, int max) {
	Query q = getSession().createQuery("from Carro");
	setPage(q, page, max);
	List<Carro> carros = q.list();
	return carros;
}

O framework Hibernate que estudamos no livro nos ajuda a fazer a paginação. Eu gosto de criar um método setPage(…) como esse:

protected void setPage(Query q, int page, int max) {
	// Paginação
	int firstResult = 0;
	if (page != 0) {
		firstResult = page * max;
	}
	q.setFirstResult(firstResult);
	q.setMaxResults(max);
}

Bom é isso 🙂 Se alguém tiver alguma dúvida avisa, pois o conceito é bem simples.

Com web services paginados, o correto seria alterar os aplicativos mobile para buscar sempre de 10 em 10 registros, por exemplo. Oas isso fica para uma próxima vez 🙂

abraço

 

Livro AWS vs Livro REST

Posted by rlecheta on novembro 30, 2015
Livros, Web Services / 2 Comments

Olá pessoal, sempre recebo emails sobre dúvidas referente as diferenças do livro de AWS e de REST, então esse post é para explicar. Assim sempre faço o link com esse post para responder 😉

aws         rest

Vamos lá, serei breve nas diferenças.

1) AWS

O livro de AWS fala apenas sobre computação em nuvem e explica com utilizar os serviços da Amazon AWS.

O objetivo é explicar como configurar servidores na internet, para que você seja dono do seu próprio data-center.

O livro explora assuntos básicos como servidores e bancos de dados na nuvem, e até avançados da AWS como: cache de informações, serviços de filas e balanceadores de carga.

Vale lembrar que este livro não fala sobre como desenvolver web services. Não é um livro sobre programação.  O objetivo é ensinar o leitor a configurar um servidor na nuvem utilizando a Amazon como provedor de serviço.

Ele é muito mais avançado do que o do REST no sentido de configurar um servidor, pois fala de balanceamento de carga, etc..

2) REST

O objetivo desse livro é ensinar a criar web services em java.  Esse é um livro sobre programação.

O livro vai desde o básico, como por exemplo: configurar um banco de dados local para desenvolvimento, é feito Hello World de programação web para Java e o assunto sobre web services vai sendo explicado aos poucos.

É feito um desenvolvimento completo de um aplicativo de Carros, com banco de dados e web services. Para testar os web services o livro inclusive possui um pacote de “bônus” com um aplicativo Android e um sistema web em AngularJS. No app Android inclusive você tira uma foto e a envia pelo web service para o servidor. No sistema web você poderá ver toda a lista de carros.

Na segunda parte do livro, ensino como criar um servidor na nuvem do Google para disponibilizar o web service criado no próprio livro. Assim você poderá testar seu web service lá na internet.

@Obs: caso você leia o livro de AWS, pode instalar estes web services lá na Amazon também.

Porém referente a esta parte de configuração de servidor, no livro de REST a explicação é básica, já no livro de AWS essa parte vai mais a fundo.

3) Estou na dúvida de qual comprar, e agora?

Isso depende… vou dar alguns exemplos:

Se você precisa aprender a desenvolver web services em Java ou se seu objetivo é aprender coisas sobre programação, vai de REST.

Se você já sabe programar em alguma linguagem e quer aprender sobre computação em nuvem, vai de AWS. O livro de REST também explica um pouco dessa parte, a diferença é que é mostrada a plataforma do Google ao invés do de AWS.

Mas por mim, leria ambos :-). Quem me dera saber tudo isso à uns 10/15 anos atrás quando eu precisava fazer essas coisas e não sabia rsrs.. No livro está tudo mastigado.

AWS e Google são dois gigantes da internet e computação em nuvem, e ambos os livros vão lhe dar uma boa base para o mercado web.

Caso você esteja no início da faculdade e começando no assunto, vai de REST pois ele é mais simples. O de AWS vai complementar seus estudos e vai lhe dar ideias mais avançadas.

 

Demo AngularJS do Livro de Web Services

Posted by rlecheta on julho 27, 2015
Livros, Web Services / No Comments

Demo em AngularJS publicada no site:

http://livrowebservices.com.br/

A demo consome os web services RESTful feitos no livro.

Para ver a demo acessar a página index.html.

http://livrowebservices.com.br/index.html

A demo não ficará no ar para sempre.. Vou tirar do ar quando o site do livro entrar.

Screenshot from 2015-07-26 21:31:05

 

Livro Web Services RESTful e Google Cloud Platform

Posted by rlecheta on julho 25, 2015
Livros, Web Services / 3 Comments

Olá pessoal, a previsão de lançamento do livro Web Services RESTful com Java e Google Cloud Platform é para Setembro 🙂

Coloquei alguns web services no site para demonstrar… Seguem o mesmo formato que uso nos livros de mobile.

http://livrowebservices.com.br/

Metade do livro explica como fazer o web service, e a outra metade como instalá-lo no Google Cloud Platform. Tem capítulos de segurança, OAuth cliente e servidor, etc.

Estou nos finalmentes, nos capítulos que explicam como consumir o web service em aplicações web JQuery/AngularJS e Android.

O app Android vai usar estes web services (igual o app dos carros), e inclusive vai salvar/atualizar/excluir os carros online. O app vai até tirar fotos e fazer o upload para o Google Cloud Storage via o web service…

Segue sumário completo: Só falta os caps 18 e 19 pois deixei a parte cliente para o final…

1) Introdução
2) Java Servlets e Web
3) MySQL
4) Java e Banco de Dados (JDBC)
5) Web Services Básico com Servlets (GET,POST,PUT,DELETE)
6) Web Services RESTful (JAX-RS)
7) Maven
8) Spring
9) Hibernate/JPA
10) File Upload – vamos usar no app Android dos carros
11) Google Cloud Platform – instalando o servidor na nuvem
12) Google CloudSQL – banco de dados na nuvem
13) Cloud Storage – as fotos dos carros são salvas na nuvem
14) Google AppEngine
15) Google ComputeEngine – configurando o servidor
16) Google ComputeEngine 2 – instalando a aplicação no servidor
17) Consumindo web services com Java
18) Consumindo web services em Web (AngularJS)
19) Consumindo web services em Android (exemplo de app completo dos carros)
20) Segurança em Web Services (autenticação, oauth, etc)
21) OAuth Client
22) OAuth Server

Livro Amazon Web Services (AWS)

Posted by rlecheta on janeiro 03, 2014
Livros, Web Services / No Comments

Já pensou em criar aplicações na nuvem com alta disponibilidade e escalabilidade?

Você sabe criar aplicações que podem ser acessadas rapidamente no mundo inteiro por milhões de usuários?

Como gerenciar os balanceadores de carga, escalonamento de servidores e banco de dados?

Meu novo livro de Amazon Web Services, visa desvendar a arquitetura deste desenho ! 🙂

arquitetura

Livro sobre Amazon Web Services

Posted by rlecheta on novembro 21, 2013
Livros, Web Services / No Comments

Olá pessoal,

Estou quase na metade do meu livro sobre Amazon Web Services, previsão de lançamento para Março/2014.

Eu vou postar o andamento na página dos livros no facebook.com/ricardolecheta para quem quiser acompanhar.

abraços

aws