Beruflich Dokumente
Kultur Dokumente
Web Services
Introdução e conceitos
Conteúdo da aula
● Web services
– Introdução e conceitos
– O protocolo HTTP
– SOAP
– REST & RESTful
Introdução e definições
De acordo com o W3C (World Wide Web
Consortium) um Web Service define-se
como: um sistema de software projetado
para suportar a interoperabilidade entre
máquinas sobre rede.
Introdução e definições
Webservice é uma solução utilizada na integração
de sistemas e na comunicação entre aplicações
diferentes. Com esta tecnologia é possível que
novas aplicações possam interagir com aquelas
que já existem e que sistemas desenvolvidos em
plataformas diferentes sejam compatíveis
Introdução e definições
De forma sucinta pode-se dizer que os web
services permitem que diferentes
aplicações possam interagir.
Exemplo
Por exemplo, imagine uma situação onde
uma solução de automação que utiliza
arduíno (ou raspberry pi) para monitorar
um ambiente, temperatura, umidade,
pressão, etc.
Exemplo
Esta solução precisa coletar todos estes
dados e fazer sua persistência em um
banco de dados e uma aplicação que faz
seu processamento.
Exemplo
Todos os dados de centenas de
localidades distintas devem ser submetidos
a um sistema de Business Inteligence que
faz análises e devolve novas informações,
que também devem ser persistidas.
Exemplo
Os clientes desta solução querem
consumir apenas os resultados finais em
uma interface web e também em um
aplicativo nos smartphones. Logo os dados
devem ser acessíveis a ambas as
plataformas.
Prof. Eder Pansani
E-mail: epansani@gmail.com
29 de novembro de 2017 http://ederpansani.com.br
10
Disciplina: Desenvolvimento Web I
Exemplo
Introdução e definições
Nesta situação pode-se imaginar que serão
empregadas distintas tecnologias, no
entanto todas elas precisarão se
comunicar. Essa é uma das aplicações de
um web service.
Vantagens
Algumas das vantagens de se utilizar web
services são:
● Simplicidade na interoperabilidade de
sistemas
Vantagens
● Independência de tecnologia de
desenvolvimento e plataformas, visto que
é possível criar web services usando
diferentes linguagens de programação.
Vantagens
● Segurança, uma vez que não há um
acesso direto à informação (que está na
base de dados).
Vantagens
● Redução de custos, um Web Service
pode servir vários tipos de
aplicações/serviços (reutilização de
código)
O protocolo HTTP
Quando se fala em web services é
necessário ter um pouco de conhecimento
sobre o protocolo HTTP e seu
funcionamento básico.
O protocolo HTTP
De forma bastante simplificada “o protocolo
HTTP (Hypertext Transfer Protocol) é o
método utilizado para enviar e receber
informações na web”
O protocolo HTTP
O protocolo HTTP é baseado em
requisições e respostas entre clientes e
servidores.
O protocolo HTTP
O cliente — navegador ou dispositivo que fará a
requisição; também é conhecido como user
agent — solicita um determinado recurso
(resource), enviando um pacote de informações
contendo alguns cabeçalhos (headers) a um URI
ou, mais especificamente, URL.
O protocolo HTTP
O servidor recebe estas informações e
envia uma resposta, que pode ser um
recurso ou um simplesmente um outro
cabeçalho.
O protocolo HTTP
Exemplo de um cabeçalho:
O protocolo HTTP
É posível observar neste cabeçalho qual o
servidor que está recebendo a solicitação
(host), as informações que estamos
enviando, o método, etc.
O protocolo HTTP
Veja a resposta:
O protocolo HTTP
Nos cabeçalhos de resposta, você pode
obter algumas informações importantes
como o código de resposta (Status). Este
código identifica se uma requisição foi
concluída com sucesso (200) ou se ela não
existe (404), por exemplo.
Prof. Eder Pansani
E-mail: epansani@gmail.com
29 de novembro de 2017 http://ederpansani.com.br
25
Disciplina: Desenvolvimento Web I
O protocolo HTTP
É possível observar também informações
do servidor, como sua versão, dados sobre
cache, formato e codificação de caracteres
da resposta entre outras.
O protocolo HTTP
Métodos HTTP
O protocolo HTTP
GET
O protocolo HTTP
POST
O protocolo HTTP
DELETE
O protocolo HTTP
PUT
O protocolo HTTP
HEAD
O protocolo HTTP
Os outros métodos disponíveis são
OPTIONS, TRACE e CONNECT. Em
teoria, os servidores devem implementar
os métodos GET e HEAD e, sempre que
possível, o método OPTIONS.
O protocolo HTTP
Status
O protocolo HTTP
200 OK - A requisição foi bem sucedida.
301 Moved Permanently - O recurso foi
movido permanentemente para outra URI.
302 Found - O recurso foi movido
temporariamente para outra URI.
304 Not Modified - O recurso não foi
alterado.
Prof. Eder Pansani
E-mail: epansani@gmail.com
29 de novembro de 2017 http://ederpansani.com.br
35
Disciplina: Desenvolvimento Web I
O protocolo HTTP
401 Unauthorized - A URI especificada exige
autenticação do cliente. O cliente pode tentar
fazer novas requisições.
403 Forbidden - O servidor entende a
requisição, mas se recusa em atendê-la. O
cliente não deve tentar fazer uma nova
requisição.
404 Not Found - O servidor não encontrou
nenhuma URI correspondente.
Prof. Eder Pansani
E-mail: epansani@gmail.com
29 de novembro de 2017 http://ederpansani.com.br
36
Disciplina: Desenvolvimento Web I
O protocolo HTTP
405 Method Not Allowed - O método
especificado na requisição não é válido na
URI. A resposta deve incluir um cabeçalho
Allow com uma lista dos métodos aceitos.
500 Internal Server Error - O servidor não
foi capaz de concluir a requisição devido a
um erro inesperado.
Prof. Eder Pansani
E-mail: epansani@gmail.com
29 de novembro de 2017 http://ederpansani.com.br
37
Disciplina: Desenvolvimento Web I
O protocolo HTTP
502 Bad Gateway - O servidor, enquanto
agindo como proxy ou gateway, recebeu
uma resposta inválida do servidor
upstream a que fez uma requisição.
503 Service Unavailable - O servidor não
é capaz de processar a requisição pois
está temporariamente indisponível.
Prof. Eder Pansani
E-mail: epansani@gmail.com
29 de novembro de 2017 http://ederpansani.com.br
38
Disciplina: Desenvolvimento Web I
O protocolo HTTP
O propósito desta breve discussão sobre o
protocolo HTTP é ter um mínimo de
conhecimento sobre seu funcionamento,
pois este é o principal meio de
comunicação dos web services.
O protocolo HTTP
Além disso algumas arquiteturas como o
REST utiliza muitos conceitos do HTTP,
usufruindo de suas características com
objetivo de tornar a utilização de WS mais
eficiente e simples.
SOAP
SOAP (Simple Object Access Protocol, em
português Protocolo Simples de Acesso a
Objetos) é um protocolo para troca de
informações estruturadas em uma
plataforma descentralizada e distribuída.
SOAP
Ele se baseia na Linguagem de Marcação
Extensível (XML) para seu formato de
mensagem, e normalmente baseia-se em
outros protocolos da camada de aplicação,
mais notavelmente em chamada de
procedimento remoto (RPC)...
Prof. Eder Pansani
E-mail: epansani@gmail.com
29 de novembro de 2017 http://ederpansani.com.br
42
Disciplina: Desenvolvimento Web I
SOAP
... e no Protocolo de transferência de
hipertexto (HTTP), para negociação e
transmissão de mensagens.
SOAP
O protocolo SOAP foi uma das primeiras
abordagens para criação de web
services, porém ele possui uma
complexidade relativamente alta para
implementação, o que na prática impõe
barreiras à sua utilização.
Prof. Eder Pansani
E-mail: epansani@gmail.com
29 de novembro de 2017 http://ederpansani.com.br
44
Disciplina: Desenvolvimento Web I
REST
Devido a isso surgiu um outro
protocolo/arquitetura de comunicação e
implementação de web services, ele é
conhecido como REST (Representational
State Transfer)
REST
O termo foi definido no ano 2000, na tese de
doutorado de Roy Fielding e é a sigla para
Representational State Transfer: é um design de
arquitetura construído para servir aplicações em
rede. A aplicação mais comum de REST é a
própria World Wide Web, que utilizou REST como
base para o desenvolvimento do HTTP 1.1.
Prof. Eder Pansani
E-mail: epansani@gmail.com
29 de novembro de 2017 http://ederpansani.com.br
46
Disciplina: Desenvolvimento Web I
REST
De forma bastante sucinta pode-se dizer
que o REST é uma forma de implementar
e definir arquitetura de web services,
porém ele não é um padrão, desta forma
ele não é obrigatório para a criação de WS.
REST
Para que uma aplicação possa ser
considerada REST ela deve seguir
algumas restrições.
REST
1. Client-Server
REST
Assim, o cliente (consumidor do serviço) não se
preocupa com tarefas do tipo: comunicação com
banco de dados, gerenciamento de cache, log, etc.
E o contrário também é válido, o servidor (provedor
do serviço) não se preocupa com tarefas como:
interface, experiência do usuário, etc. Permitindo,
assim, a evolução independente das duas
arquiteturas. Prof. Eder Pansani
E-mail: epansani@gmail.com
29 de novembro de 2017 http://ederpansani.com.br
50
Disciplina: Desenvolvimento Web I
REST
2. Stateless
REST
3. Cacheable
REST
4. Uniform Interface
REST
Dito isso, um dos princípios desta restrição é
que o cliente nunca deve chamar diretamente
o servidor da aplicação sem antes passar por
um intermediador, no caso, pode ser um load
balancer ou qualquer outra máquina que faça
a interface com o(s) servidor(es).
REST
Isso garante que o cliente se preocupe apenas
com a comunicação com o intermediador e o
intermediador fica responsável por distribuir as
requisições nos servidores. O importante é
ficar claro que criando um intermediador, a sua
estrutura fica muito mais flexível à mudanças.
REST
5. Layered System
RESTfull
E o que é RESTful?
RESTfull
Para uma API ser considerada RESTful ela
deve seguir estritamente as regras
definidas na arquitetura REST, além de
possuir um certo nível de coesão e
maturidade, definidos na escala chamada
de Richardson Maturity Model.
Prof. Eder Pansani
E-mail: epansani@gmail.com
29 de novembro de 2017 http://ederpansani.com.br
58
Disciplina: Desenvolvimento Web I
RESTfull
Richardson Maturity Model.
https://martinfowler.com/articles/richardsonMaturityModel.html
RESTfull
De forma bastante resumida, os níveis são:
RESTfull
Nível 1: Aplicação de resources. A API é
dividida em diferentes endpoints que
apontam para um ou mais resources.
RESTfull
Nível 2: Implementação de verbos HTTP para
diferentes tipos de operações que deseja
executar. Uma mesma URI por aceitar mais de
um verbo HTTP, por exemplo: GET /user pode
retornar todos os usuários e POST /user
passando os atributos do usuário pode criar um
novo.
Prof. Eder Pansani
E-mail: epansani@gmail.com
29 de novembro de 2017 http://ederpansani.com.br
62
Disciplina: Desenvolvimento Web I
RESTfull
Nível 3: Um novo conceito é adicionado,
chamado: HATEOAS (Hypertext As The
Engine Of Application State). Onde a API
deve fornecer para o cliente toda a
informação necessária para interagir com a
aplicação.
Prof. Eder Pansani
E-mail: epansani@gmail.com
29 de novembro de 2017 http://ederpansani.com.br
63
Disciplina: Desenvolvimento Web I
Dúvidas?
Perguntas?