Desenvolvimento Web II Web Service PHP Rest Frameworks: Slim e Laravel (get/ post / put / delete) Gil Eduardo de Andrade
Web Service Introdução: Um web service pode ser definido como uma tecnologia que permite integrar diversos sistemas de diferentes plataformas; Ele permite que novas aplicações desenvolvidas interajam com sistemas já existentes;
Web Service Introdução: A interação tem como base protocolos (HTTP / HTTPS) que possibilitam que as aplicações trocam dados entre si. Os dados trocados possuem algum de tipo de formato conhecido como, por exemplo, XML, CSV, JSON e texto puro;
Web Service Estrutura: Um web service ou serviço web possuem como estrutura, que permite seu funcionamento: Arquitetura cliente-servidor; Recursos fornecidos via HTTP; URL para acesso; A resposta de um web service para uma dada requisição pode conter formatos como: XML, Json, etc.
Funcionalidade: Web Service Um web service permite que sistemas já existentes disponibilizem serviços públicos a aplicações secundárias e muitas vezes desconhecidas; Isso possibilita que aplicações externas ao domínio onde web service está hospedado possam acessá-lo (enviando ou recebendo dados).
Web Service Benefícios: Integração de informação e sistemas: permitem integrar qualquer tipo de sistema (Windows, Linux, IOS, Android) e linguagens de programação (PHP, Java, Python); Reutilização de código: após implementado pode ser utilizado por diversas aplicações, sem necessidade dereescrita;
Web Service Benefícios: Maior segurança: evita, por exemplo, que aplicações façam comunicação direta com bases de dados; Redução de custos: fazem uso (tiram proveito) de protocolos e infraestruturas web já existentes, o que diminui a necessidade de investimento;
Web Service Exemplos de uso: Facebook Graph API Leitura e gravação de dados para o Facebook; Twitter REST APIs Leitura e escrita de dados no Twitter; Google Maps APIs Web Service Fornece dados geográficos para aplicativos de mapa;
Web Service Padrão Rest: Possui o protocolo HTTP como base fundamental para comunicação; Tem como princípio fornecer uma estrutura de comunicação menos rígida, não havendo restrição no formato das mensagens; Entretanto, o formato Json costuma ser muito utilizado;
Web Service na Prática Framework Slim www.gileduardo.com.br/ifpr/dwii/downloads/slim.zip www.gileduardo.com.br/ifpr/dwii/downloads/ex_doc10.zip
Framework Slim Exemplo: (Código básico principais métodos) (Arquivo: rest.php slim.zip) Como visto anteriormente, web services que utilizam o padrão Rest (caso do Slim) são fortemente baseados no protocolo HTTP. Neste contexto, as principais requisições desse protocolo (GET e POS) podem ser tratadas pelo framework Slim. No código ao lado, temos os métodos GET com e sem recebimento de parâmetro e o método POST. Quando um cliente efetua uma dessas requisições, uma reposta em formato HTML é produzida (comando echo) identificando o método invocado pelo cliente. Para testar nosso web service utilizaremos o aplicativo POSTMAN (plugin do Google Chorme) como cliente.
Aplicativo POSTMAN Cliente POSTMAN: (efetuando requisições ao web service) Método Requisitado pelo cliente POSTMAN GET URL do web service, invoca a rota / sem passar parâmetros. Permite testar se o web service está OK. Resposta do web service método $app->get( /, function() { });
Aplicativo POSTMAN Cliente POSTMAN: (efetuando requisições ao web service) Método Requisitado pelo cliente POSTMAN GET URL do web service, invoca a rota / sem passar parâmetros. Permite testar se o web service está OK. Resposta do web service método $app->get( /, function() { });
Framework Slim Exemplo: (Código básico principais métodos) (Arquivo: rest.php slim.zip) No código ao lado, temos os métodos PUT (utilizado para atualizar ou inserir um recurso) e DELETE (utilizado para remover um recurso). Assim como mostrado anteriormente, quando um cliente efetua uma dessas requisições, uma reposta em formato HTML é produzida (comando echo) identificando o método invocado pelo cliente.
Aplicativo POSTMAN Cliente POSTMAN: (efetuando requisições ao web service) Método Requisitado pelo cliente POSTMAN PUT URL do web service, invoca a rota / sem passar parâmetros. Permite testar o método PUT. Resposta do web service método $app->put( /, function() use ($app) { });
Aplicativo POSTMAN Cliente POSTMAN: (efetuando requisições ao web service) Método Requisitado pelo cliente POSTMAN DELETE URL do web service, invoca a rota / sem passar parâmetros. Permite testar o método DELETE. Resposta do web service método $app->delete( /, function() use ($app) { });
Criando Cliente PHP Aplicação de Exemplo: (CRUD de Produtos Tela Principal Arquivo: /Client/index.php ) Obs.: CRUD = Create, Retrieve, Update e Delete. Cliente PHP permite requisitar os métodos GET, POST, PUT e DELETE para obter, cadastrar, alterar e excluir produtos de uma base de dados
Criando Cliente PHP GET Aplicação de Exemplo: (Arquivo: rotinas.php ex_doc10.zip) Monta o Array de dados que será enviado ao método GET do web service. Utiliza a biblioteca curl do php, especifica a URL que será invocada (inicia conexão), passa como parâmetro o Array montado em formato json. Fecha / Finaliza conexão com web service. Executa a requisição para URL (web service) especificada e recebe os dados de retorno. Obs.: curl = permite conexão com diversos tipos de servidores usando diversos tipos de protocolos.
Criando Web Service GET Aplicação de Exemplo: (Arquivo: rest.php ex_doc10.zip) Dado em formato json enviado pelo cliente quando ele efetuar uma requisição GETpassando parâmetros. Utiliza o método json_decode() para decodificar os dados e convertê-los em array. Utiliza o pacote PDO para conectar com o banco e executar a query de seleção. Retorna para o cliente que efetuou a requisição os dados obtidos do banco de dados em formato json.
Executanto Cliente/WS GET Aplicação de Exemplo: (Arquivo: /Client/index.php Selecionar) Invoca o método GET do web service. Usuário seleciona a quantidade de registros que deseja visualizar. Esse dado é enviado ao web service via requisição GET. Dados retornados pelo web service.
Criando Cliente PHP POST Aplicação de Exemplo: (Arquivo: rotinas.php ex_doc10.zip) Monta o Array de dados que será enviado ao método GET do web service. Utiliza a biblioteca curl do php, especifica a URL que será invocada (inicia conexão). Especifica o método (POST) do web service que será requisitado. Passa como parâmetro o Array montado em json. Fecha / Finaliza conexão com web service. Obs.: A codificação PUT e DELETE segue o mesmo padrão do POST. Executa a requisição para URL (web service) especificada e recebe os dados de retorno.
Criando Web Service POST Aplicação de Exemplo: (Arquivo: rest.php ex_doc10.zip) Dado (nome do produto) enviado pelo cliente em formato json quando uma requisição POST é efetuada. A função json_decode() é utilizada para decodificar os dados e convertê-los em array. Utiliza o pacote PDO para conectar com o banco e executar a query de inserção. Retorna para o cliente, em formato json, uma resposta indicando que o produto foi cadastrado com sucesso.
Executanto Cliente/WS GET Aplicação de Exemplo: (Arquivo: /Client/index.php Inserir) Invoca o método POST do web service. Usuário informa o nome do produto que deseja cadastrar. Esse dado é enviado ao web service via requisição POST. Dados retornados pelo web service.
Web Service na Prática Framework Laravel www.gileduardo.com.br/ifpr/dwii/downloads/dwii_dica10.zip
Web Service Laravel: O framework Laravel possui uma api pronta para construção de serviços web; O arquivo (api.php) que permite definir as rotas e métodos de requisição do web service fica localizado no diretório /routes/api.php; A partir dele podemos construir rapidamente serviços web através do Laravel;
Framework Laravel Exemplo (GET): (Código básico principais métodos) (Arquivo: api.php dwii_dica10.zip) No código ao lado, temos o método GET para URL /curso. Quando um cliente efetua uma requisição GET, uma seleção de dados é efetuada no banco e uma reposta em formato json é produzida (comando echo). Para testar nosso web service Laravel utilizaremos, novamente, o aplicativo POSTMAN como cliente. Observe que, ao utilizar a model curso (curso::all()) para selecionar os curso cadastrados, o conjunto de objetos retornado é convertido para array.
Aplicativo POSTMAN Cliente POSTMAN (GET): (requisições ao web service Laravel) Método Requisitado pelo cliente POSTMAN GET URL do web service, invoca a rota /curso. Permite testar o método GET. Resposta do web service método $app->get( /curso, function() { });
Framework Laravel Exemplo (POST): (Código básico principais métodos) (Arquivo: api.php dwii_dica10.zip) No código ao lado, temos o método POST para URL /curso/cadastrar. Quando um cliente efetua uma requisição POST, os dados enviados em formato json são carregados ($request- >all()) para a variável $array. Após isso, esse array é percorrido e os curso enviados pelo cliente são adicionados a base de dados. Para testar o método POST do web service Laravel utilizaremos o aplicativo POSTMAN como cliente. O web service retorna, em formato json, uma mensagem indicando a quantidade de registros cadastrados.
Aplicativo POSTMAN Cliente POSTMAN (POST): (requisições ao web service Laravel) Método Requisitado pelo cliente POSTMAN POST URL do web service, invoca a rota /curso/cadastrar. Permite testar o método POST. Array de dados enviado em formato json. Resposta do web service método $app->post( /curso/cadastrar, function(request $request) { });
Framework Laravel Exemplo (PUT): (Código básico principais métodos) (Arquivo: api.php dwii_dica10.zip) No código ao lado, temos o método PUT para URL /curso/alterar. Quando um cliente efetua uma requisição PUT, os dados enviados em formato json são carregados ($request->all()) para a variável $objdado. Após isso, esse objeto é utilizado para alterar os dados curso especificado. Para testar o método PUT do web service Laravel utilizaremos o aplicativo POSTMAN como cliente. O web service retorna, em formato json, uma mensagem indicando a quantidade de registros alterados.
Aplicativo POSTMAN Cliente POSTMAN (PUT): (requisições ao web service Laravel) Método Requisitado pelo cliente POSTMAN PUT Dados enviados em formato json. URL do web service, invoca a rota /curso/alterar. Permite testar o método PUT. Resposta do web service método $app->put( /curso/alterar, function(request $request) { });
Framework Laravel Exemplo (DELETE): (Código básico principais métodos) (Arquivo: api.php dwii_dica10.zip) No código ao lado, temos o método DELETE para URL /curso/remover. Quando um cliente efetua uma requisição DELETE, os dados enviados em formato json são carregados ($request->all()) para a variável $objdado. Após isso, esse objeto é utilizado para remover o curso especificado. Para testar o método DELETE do web service Laravel utilizaremos o aplicativo POSTMAN como cliente. O web service retorna, em formato json, uma mensagem indicando a quantidade de registros removidos.
Aplicativo POSTMAN Cliente POSTMAN (DELETE): (requisições ao web service Laravel) Método Requisitado pelo cliente POSTMAN DELETE Dados enviados em formato json. URL do web service, invoca a rota /curso/remover. Permite testar o método DELETE. Resposta do web service método $app->put( /curso/remover, function(request $request) { });
Web Service: Slim e Laravel Exemplos Utilizados no Documento http://www.gileduardo.com.br/ifpr/dwii/downloads/dwii_exdoc10.zip Código-fonte da Aplicação SETA http://www.gileduardo.com.br/ifpr/dwii/downloads/dwii_dica10.zip Exercício sobre o Conteúdo http://www.gileduardo.com.br/ifpr/dwii/downloads/dwii_pratica10.pdf