Webservices Rest
Web services Modelo de comunicação em rede Define protocolos, formatos, estilos Funções da camada de apresentação Serviços: blocos de construção independentes Formatos: XML ou JSON Service-oriented architecture (SOA) Provedor x solicitante x intermediário
Web services Caminho da solicitação
XML Extended Markup Language (XML) Oferece um formato ASCII para trocar qualquer tipo de informação estruturada Usa o “estilo” HTML de markup com tags <pessoa nome=”João”> <frutasFavoritas> <fruta>Manga</fruta> <fruta>Maçã</fruta> <fruta>Uva</fruta> </frutasFavoritas> </pessoa> Os tags podem ser definidos para criar uma “Aplicação XML” ou “Linguagem XML”
REpresentational State Transfer Não é um protocolo Princípios arquiteturais para construir webservices RESTful – API remota que segue estilo REST Stateless Ex: dev.twitter.com apidev.accuweather.com
REST vs SOAP SOAP é um protocolo - primeira opção para Webservices – Big Web services JSON x XML Rest: Simplicidade e performance SOAP suporta WS-Security e ACID - (Atomicity, Consistency, Isolation, Durability)
Métodos HTTP
JSON JavaScript Object Notation Representação de Estruturas de Dados Ex: <?php //Uma simples saída JSON $object = new stdclass(); $object->mensagem = "Hello World!"; echo json_encode($object); ?>
JSON
HTTP – Cliente e Servidor Comunicação via URL + método Resposta: dados JSON Navegadores não são bons: POST e GET apenas Javascript e PHP usam webservices Formato padrão: /tabela ou /tabela/dado
Exemplos solicitações REST http://localhost/clients/jim Mostra dados do Jim http://localhost/clients/ Mostra dados de todos os clientes PUT http://localhost/clients/paul -d '{"address":"Sunset Boulevard" } Atualiza o endereço do Paul DELETE http://localhost/clients/anne Apaga a Anne
Códigos de retorno 200 OK 201 Created 400 Bad Request 404 Not Found Sucesso 201 Created Sucesso para PUT ou POST 400 Bad Request Solicitação mal formatada 404 Not Found Recurso não encontrado
Códigos de retorno 401 Unauthorized 405 Method Not Allowed Autenticação necessária 405 Method Not Allowed Método HTTP não suportado 409 Conflict Conflito, como repetir uma chave 500 Internal Server Error Problemas de execução no servidor
Consumindo Web services Data e Hora http://api.timezonedb.com
Consumindo Web Services Meteorologia openweathermap.org
Núcleo do Rest
Preparação dos dados
Saída
Arduino: Servindo web services