• Nenhum resultado encontrado

Web das Coisas WoT. Software: APIs para IoT. Prof. João Bosco Teixeira Junior

N/A
N/A
Protected

Academic year: 2021

Share "Web das Coisas WoT. Software: APIs para IoT. Prof. João Bosco Teixeira Junior"

Copied!
48
0
0

Texto

(1)

Web das Coisas – WoT Software: APIs para IoT

(2)

WoT

● Um novo paradigma para desenvolvimento de

aplicações inspirado na ideia do IOT;

● Utiliza protocolos e padrões amplamente

aceitos na internet como HTTP e URI;

● O objetivo é fazer com que a internet também

possa englobar os objetos do dia-a-dia

(geladeira, ar-condicionado, tv, carro, etc.)

(3)

WoT - Protocolos

● HTTP

● Além de transportar os dados, também é usado para

manipular os objetos através dos métodos HTTP tais como GET, POST, PUT e DELETE;

● Através destes métodos é possível expor as

funcionalidades de um dado objeto na internet;

URI (Uniform Resource Identifier)

(4)

HTTP

Hypertext Transfer Protocol

● Implementa o serviço web arquitetura TCP/IP; ● Baseado no modelo Cliente-Servidor;

● Utiliza os serviços de transporte orientado a

conexão na porta 80/TCP;

(5)

HTTP: Teste

# telnet www.terra.com.br 80 Connected to www.terra.com.br. Escape character is '^]'. GET /index.html HTTP/1.1 host: www.terra.com.br User-Agent: Mozilla/4.0 HTTP/1.1 200 OK C: S: DIGITE Digite <enter>

(6)

HTTP: Sessão

● Uma sequência de transações de requisição

resposta usando a mesma conexão TCP;

● O cliente inicia a comunicação estabelecendo

uma conexão TCP para uma porta do servidor, por omissão a porta 80;

● O servidor escutando naquele IP e naquela

porta, retorna com “HTTP/1.1 200 OK”,

juntamente com o resultado da requisição ou erro informado;

(7)

HTTP: URI

● Em TI, um Identificador Uniforme de Recursos

(URI) - Uniform Resource Identifier (em inglês) é uma cadeia de carateres compacta usada

para identificar ou denominar um recurso na Internet (wikipedia).

<scheme name> : <hierarchical part> [ ? <query> ] [ # <fragment> ]

(8)

HTTP: Métodos

● Também chamados de verbos

● Usados para indicar a ação desejada sob o

recurso

● O Recurso é indicado pela URI ● Principais métodos utilizados

● HTTP 1.0 → GET, POST e HEAD

(9)

HTTP: Métodos

GET: Usado para solicitar um recurso do servidor;

HEAD: É idêntico ao GET mas só vem o cabeçalho da resposta a requisição;POST: O método post é usado para solicitar ao servidor o processamento de

informações enviadas no corpo da requisição. É maneira padrão usada para processar formulários web;

PUT: Solicita que o objeto enviado junto a requisição, seja armazenada sob a

URI fornecida. Se o recurso não existe ele é criado, se existe ele é modificado.

DELETE: Pode ser usado para remover um recurso específico.

TRACE: Ecoa o pedido recebido de modo que o cliente pode ver as

mudanças ou adições (se houver) foram feitas por servidores intermediários.

OPTIONS: Retorna os métodos http que o servidor suporta para determinada

(10)

HTTP: GET x POST

● É possível usar o método GET para enviar dados de

formulários do servidor, porém não é aconselhável, pois os dados serão passados na URL, e podem ser facilmente reproduzidos numa tentiva de fraude no sistema. O método correto para envio do formulário é o metodo POST.

● Entrada no html para o método GET:

● <FORM action=form.php method=GET> ● Entrada no html para o método POST:

● <FORM action=form.php method=POST> ● Exemplos:

(11)

HTTP: Códigos de Retorno

● 200 OK ● 400 Bad Request ● 401 Unauthorized ● 403 Forbidden ● 404 Not Found

(12)
(13)
(14)

API - Aplication Programing

Interface

é um conjunto de rotinas e padrões estabelecidos por um software para a utilização das suas funcionalidades por aplicativos que não pretendem envolver-se em detalhes da

implementação do software, mas apenas usar

seus serviços.

“How to design a good API and why it matters”

(15)

API – Comunicação “S2S”

As APIs permitem que software fale com

software. Para fornecer um serviço o

“elemento de software” deve possuir uma interface de programação de aplicativo ou API.

● O Sistema operacional tem uma API (SPI)

● Muitos Protocolos de Aplicação fazem uso de

(16)

Exemplo API TTS google

● TTS: Text to Speak (Texto para fala)

● curl 'http://translate.google.com/translate_tts? ie=UTF-8&tl=pt&q=Tecnologias %20Inovadoras&tl=en&client=t' -H 'Referer: http://translate.google.com/' -H 'User-Agent: stagefright/1.2 (Linux;Android 5.0)' > google_tts.mp3

(17)

Características de uma boa

API

● Fácil de Aprender e usar, mesmo sem

documentação;

● Fácil leitura e manutenção de código que a

usa;

● Fácil de estender;

(18)

Componentes de uma API

● Funções

● Parâmetros ● Retorno

(19)

O grandes “players” da

internet possuem APIs

● Google ● Facebook ● Ebay ● Twiter ● Amazon ● Youtube

(20)

API para APIs - Temboo

● Biblioteca de Processos de Programação ● Virtualiza os uso das APIs dos principais

players de internet.

● Gera códigos que podem ser colados direto na

aplicação.

● Conceito: Coreografia (Service choreography)

● Uma forma de composição de serviço na qual um

protocolo de interação entre diversos serviços é definido de uma perspectiva global.

(21)

API para APIs - Temboo

Meu Software API do Player 1 . . . COREOGRAFIA API do Player 2 API do Player n API do Player 1

(22)

Temboo

Hora da Prática

(caderno de práticas: Pratica 1)

(23)

Aplicações RESTful e Arquitetura Orientada Recursos (ROA)

(24)

Midleware para Desenv. de

aplicações distribuídas

● RPC, RMI, CORBA ● SOAP e WSDLREST ● CoAP

(25)

REST

REST – Representative State Transfer; ● Transferência de Estado Representativo;

Definido por Roy T. Fielding em sua tese de

PhD;

● Estabelece um conjunto de princípios para

(26)

Princípios de REST

A interface da aplicação deve ser uniforme;

Stateless: Uma requisição não depende de outra anterior,

Toda informação necessária ao processamento deve está na própria requisição;

Cacheable: O resultado das requisições podem ser

armazenadas em cache;

Client-Server: A comunicação deve ser cliente-servidor;Layered System (Camadas): O cliente não deve

enxergar além das camadas adjacentes

Code-on-Denand: A aplicação pode opcionalmente

gerar código para que o cliente execute. Ex: Javascript;

(27)

Interface Uniforme ou API

Uniforme

● Definição de uma interface entre clientes e servidores. Desacopla os diferentes

elementos da arquitetura. Princípios para uma interface uniforme:

Baseada em recursos: Recursos são identificados individualmente através de URIs.

Os recursos são separados de suas representações, que são enviadas ao cliente. A representação do recurso pode ser HTML, JSON ou XML.

Manipulação dos Recursos através de Representações: Quando um cliente tem

uma representação de um recurso, incluindo quaisquer metadados anexado, tem informações suficientes para modificar ou excluir o recurso no servidor, desde que tenha permissão para fazê-lo.

Mensagens auto-descritivas: Cada mensagem inclui informações suficientes para

descrever como processar a mensagem. Por exemplo, qual parser para invocar pode ser especificado por um tipo de mídia Internet (anteriormente conhecido como um

(28)

Aplicações RESTful

(De uma outra forma)

● Todas as coisas deve ter pelo menos um identificador ● Vincule as coisas

● Utilize métodos padronizados

● Recursos com múltiplas representações

● Comunique sem estado

(29)

1) Dê a todas as coisas um

Identificador

● Use URIs para identificar tudo o que precisar

ser identificado, especifique todos os recursos de "alto nível" que seu aplicativo oferece, se eles representam itens individuais, conjuntos de itens, objetos virtuais e físicos, ou

(30)

2) Vincule as coisas

● Use links para referenciar coisas que possam

ser identificadas (recursos) sempre que for possível.

● A resposta a uma requisição pode conter links

(31)

3) Utilize os métodos

padrão

● Os clientes para interagir com os seus recursos

devem implementar o protocolo de aplicação padrão (HTTP) corretamente, isto é, utilizar os métodos padrão: GET, PUT, POST DELETE e OPTIONS;

● O cliente em sistema distribuído pode solicitar:

Leitura (Consulta), Escrita (Nova entrada), Alteração, Exclusão;

(32)

3) Utilize os métodos

padrão

(33)

4) Recursos com múltiplas

representações

● O cliente pode querer escolher a forma que

deseja receber as informações. Ex.:

(34)

5) Comunique sem Estado

● Uma requisição do cliente para o servidor não

deve depender de requisições anteriores;

● REST exige que o estado seja transformado no

estado do recurso. O estado deve ser transformado em algo que possa ser consultado;

● Ou o estado do recurso é enviado ao cliente e

(35)
(36)

Hora da Prática

(caderno de práticas: Pratica 2)

(37)

ROA – Arquitetura

Orientada a Recursos

● URIs deve possuir correspondência com o recurso:

● http://www.fac.br/aluno/pedro

● Endereçabilidade: Todo recurso deve possuir pelo menos

um endereço

● Sem estado: Requisições deve ser auto contidas ● Representações (JSON, XML, CSV, RSS)

● Cliente -> Servidor: Criação ou modificação ● Servidor -> Cliente: Requisição

(38)

ROA – Interface Uniforme

● GET: Usado para recuperar um recurso

● A resposta deve incluir em seu corpo a representação

do recurso

● DELETE: Usado para apagar um recurso

● A resposta deve ter o status HTTP correspondente

● POST e PUT: Criação de Recursos

● A resposta deve ter o status HTTP correspondente ● PUT: Atualização de Recursos

● A resposta deve ter o status HTTP correspondente ● OPTIONS: Informa quais métodos o recurso suporta

(39)

Desenvolvimento de

serviços - RESTful

● Passos:

● 1 - Levantamento de requisito ● 2 - Identificação de recursos

● 3 - Definição de representação de recursos ● 4. Definição de URIs

(40)

Exemplo: Sistema de

Climatização

Sensor de Temperatura + Sistema de Refrigeração Interface IP

(41)

Exemplo: Sistema de

Climatização

● 1 - Levantamento Requisitos

● Incluir um comodo

● Conhecer a temperatura do comodo

● Ajustar a temperatura do comodo

● 2 - Identificação dos Recursos

(42)

Exemplo: Sistema de

Climatização

● 3 – Definição da Representação dos Recursos

● JSON : { “temp”, “valor” } ● JSON : { “Endereço IP” }

– Inclusão de um cômodo (nome do comodo na URI )

● 4 – Definição da URI

● Cômodo: /comodo Exemplo

– /quarto , /cozinha , /banheiro, etc...

● Temperatura

– /comodo/temperatura

– Ex: /cozinha/temperatura

Resultado da requisição

(43)

Exemplo: Sistema de

Climatização

Temperatura GATEWAY Sistema De Refrigeração Protocolos

Zigbee, blutooth, usb, serial, IR INTERNET 1

2 3

1 – GET /quarto/temperatura (host: www.x.com) 2 – 200 OK

4 5 6

(44)

Formatos para transferencia

de recursos

● RFC 4627 (JSON)

● Representa estruturas de dados em texto ● “ XXX “ - String

● [ 1, 2, 3 ] - Lista

{ “A” : “B” } - Par: Chave-valor (key-value pair)

● XML (W3C) ● CSV

(45)

Hora da Prática

(caderno de práticas: Pratica 3)

(46)

Segurança da Web da

Coisas

● HTTP Auth ● SSL ● OpenID ● OAuth

(47)

Conclusões

● Uma boa API pode determinar o sucesso do

negócio

● A Web das coisas expande o domínio da

internet para objetos do nosso dia a dia.

● HTTP é usado como protocolo base para a

Web das Coisas

(48)

Referências

Documentos relacionados

A lo largo del siglo XX, y especialmente después de la Segunda Guerra Mundial, se constata en las formaciones sociales capitalistas en general, aunque con variaciones

Deus não vai perguntar quantas pessoas você atraiu para a igreja.... mas vai perguntar como você influenciou o Mundo à

O valor da reputação dos pseudônimos é igual a 0,8 devido aos fal- sos positivos do mecanismo auxiliar, que acabam por fazer com que a reputação mesmo dos usuários que enviam

 VI-criadouro científico de fauna silvestre para fins de conservação;  VII-criadouro comercial de fauna silvestre;.  VIII-estabelecimento comercial de fauna silvestre;

E é aqui que Anabela Moreira marca a barreira –e por isso o filme tantas vezes parece ser uma experiência, um projeto em curso– porque a atriz interpreta, contagia-se,

Ficou claro na revisão da literatura que o desenvolvimento de produtos é um processo complexo, de natureza multidisciplinar e que exige uma estreita relação

REPUBLICA DO LIBANO... PATEUR,

● Campanha de seguimento contra o sarampo para menores de 5 anos ● Campanha Nacional contra influenza. ampliada para pessoas com 60 anos ou mais