Sistemas Distribuídos Mauro Lopes Carvalho Silva Professor EBTT DAI Departamento de Informática Campus Monte Castelo Instituto Federal de Educação Ciência e Tecnologia do Maranhão
Objetivos Nesta aula iremos apresentar a construção de um Web Service Rest utilizando o JSON como padrão de saída produzido. Neste aspecto serão abordados os conceitos de recursos, sub-recursos e parâmetros.
Plano de Aula Web Services REST e JSON Resources, URIs e Media Types JSON Resources SubResources Parâmetros
Resources, URIs e Media Types Resource: qualquer informação disponível; Exemplos de resources: O cadastro de uma pessoa; uma imagem; um documento; cotação de uma moeda. Deve possuir um identificador único. Esse identificador será utilizado para que o resource possa ser acessado. URI (Uniform Resource Identifier): identificador de um web resources na internet ou em uma intranet. Media Types: formas de representação de resources. Na web é normal que o resultado obtido de um requisição esteja em html, xml ou json.
JSON (JavaScript Object Notation) JSON é um formato leve para intercâmbio de dados computacionais que vem se tornando um padrão. Muito difundido com o antigo Ajax e o atual padrão arquitetural REST; JSON é similar ao XML porem mais compacto, mais rápido e mais simples de utilizar; Ele é baseado em texto, de formato leve e simples de parsear ; É independente de plataforma e linguagem de programação.
JSON: Sintaxe Um dado em JSON é composto pelo conjunto nome/valor; Os dados são separados por vírgula; As chaves definem um objeto; E colchetes definem uma coleção; Tipos de Dado: number (inteiro ou real) string (entre aspas duplas) boolean (true or false) array (entre colchetes) object (entre chaves) null
JSON: Sintaxe de Objetos São conjuntos não ordenados de pares formados por chave/valor Objetos são envolvidos por { }, separa pares chave/valor : separa chaves e valores As chaves são strings Os valores são valores JSON
JSON: Sintaxe professor : { chaves objeto string nome : Mauro Lopes, email : maurosilva@gmail.com, idade : 42, number dedicaçaoexclusiva : true } valores boolean
JSON: Sintaxe de Arrays São sequencias ordenadas de valores É muito comum estes valores serem objetos São envolvidas por [ ], separa pares chave/valor JSON não fala nada sobre índices.
JSON: Sintaxe array listadeprofessores :[ objetos { nome : Mauro, idade : 42, dedicaçaoexclusiva : true}, { nome : Carol, idade : 32, dedicaçaoexclusiva : false}, { nome : João, idade : 63, dedicaçaoexclusiva : true} ]
Web service com JAX-RS A especificação JAX-RS define um modelo de programação para a criação de web services restful (web service que seguem os princípios do estilo arquitetural REST).
Resources De acordo com a JAX-RS, os web resources são implementados por classes Java. Todo web resource deve possuir uma URI que é definida parcialmente pela anotação @Path. web resource
Resources Os métodos HTTP podem ser mapeados para métodos Java de uma classe. As anotações @GET, @PUT, @POST, @DELETE e @HEAD são utilizadas para realizar esse mapeamento. web resource
Resources Media Type, é utilizado para a representação do resource, no caso o formato de retorno do mesmo. Usamos a anotação @Produces e o enum MediaType. web resource
Subresource A princípio, uma classe define apenas um resource. Porém, podemos definir subresources dentro de uma classe através de métodos anotados com @Path. web resource subresource
Subresource O sufixo da URI de um subresource é definido pela concatenação do valor da anotação @Path aplicada na classe com o valor da anotação @Path aplicada no método correspondente ao subresource. No exemplo mostrado anteriormente teríamos o seguinte endereço:.../recurso/subrecurso.../boamusica/radio
Parâmetros: @PathParam web resource subresource parâmetro
Parâmetros Outras opções de parâmetros: @QueryParam @FormParam @HeaderParam @CookieParam
Dúvidas Página do Professor Mauro: http://www.dai.ifma.edu.br/~mlcsilva
Próxima Aula Prática de Laboratório: Web Services REST.
Referências Sistemas Distribuídos - Conceitos e Projeto, George Coulouris, 4ª Edição - Editora Bookman, 784 páginas. SOA aplicado: integrando com web services e além, Alexandre Saudate Casa do Código, 277 páginas.