Desenvolvimento de APIs
Este material aborda conceitos relacionados a Desenvolvimento de APIs.
Esperamos que você desenvolva, no decorrer de seus estudos, as seguintes capacidades:
Para desenvolver tais capacidades, você deverá estudar os seguintes temas:
O estudo desses temas será necessário para que você resolva a situação-problema a seguir. Então, avance para conhecê-la.
A ExoApi é uma empresa de desenvolvimento de software focada na integração entre diferentes sistemas, softwares ou serviços. Utiliza as tecnologias mais recentes do mercado para ter performance, controle, segurança e escalabilidade para sua empresa e seus contratantes.
A ExoApi contratou você para desenvolver a nova demanda que será realizada para o lançamento de seu novo aplicativo. O aplicativo consiste em armazenar todos os projetos que a empresa realiza para ter maior controle e melhorar a gestão e visibilidade do que está sendo feito por seus funcionários.
Essa demanda consiste em desenvolver a interface (API) para disponibilizar os dados que serão apresentados e utilizados pela equipe de mobile e exige os seguintes critérios:
Para concluir esse projeto, você deverá solucionar os seguintes desafios.
Clique nos botões a seguir para conhecê-los:
Desafio 1
Desenvolver a API do aplicativo, disponibilizando os recursos para leitura, escrita, atualização e deleção do projeto.
Desafio 2
Restringir o acesso aos recursos da API aos usuários autenticados, visando a integridade e segurança da informação.
Nesta etapa, você deverá resolver o desafio 1:
Para isso, você estudará os seguintes conteúdos:
Clique no player a seguir para acessar o vídeo sobre o Desenvolvimento de APIs.
Para este desafio será necessário realizar:
Após a instalação das ferramentas mencionadas realize o passo a passo a seguir para iniciar o projeto.
Clique aqui para baixar o tutorial com o passo a passo.
A seguir vamos conhecer os seguintes tópicos:
É importante compreender como as solicitações na web são realizadas e quais protocolos e regras são utilizados.
O HTTP (Hypertext Transfer Protocol) é o protocolo que permite web servers e browsers enviarem e receberem informações e dados pela internet. É um protocolo de requisição e resposta, ou seja, o cliente faz a requisição e o servidor dá a resposta, conforme o exemplo a seguir:
Clique nas setas laterais para navegar pelo conteúdo.
Uma requisição (request) HTTP é realizada quando o usuário solicita uma informação ao servidor e tem a estrutura, conforme imagem a seguir:
A requisição está estrutura a partir da seguinte organização:
A solicitação é a resposta do servidor sobre o estado do recurso solicitado, conforme a estrutura representada a seguir:
Essa estrutura apresenta: Status Code, Cabeçalho e Corpo da resposta.
O status que informa a resposta do servidor (se foi com sucesso, falha, erro, não encontrada). Para compreender as respostas dos status HTTP, os códigos podem ser agrupados em cinco classes:
1) Respostas de informação (100-199);
2) Respostas de sucesso (200-299);
3) Redirecionamentos (300-399);
4) Erros do cliente (400-499);
5) Erros do servidor (500-599).
Para conhecer um exemplo de requisição, clique aqui.
Agora que conheceu na prática como são realizadas as requisições, vamos entender o que é API, REST e RESTfull.
A sigla API significa Application Programming Interface (interface de programação de aplicações). É uma interface que permite a comunicação entre um ou mais sistemas através de um conjunto de definições entre solicitante e produtor desse conteúdo, possibilitando que um sistema utilize as funcionalidades de outro sistema programaticamente.
Para exemplificar, imagine o exemplo de uma restaurante. O cliente (como uma página na web ou aplicativo móvel) solicita informações ao garçom (API), a partir da informação contida no menu, para fazer um pedido. O garçom leva esse pedido até a cozinha (server), que fica responsável por executar a ação solicitada. Você não tem a descrição, por exemplo, sobre como será feito o prato.
Conforme você estudou, uma API é um conjunto de regras que permite diferentes programas se comunicarem para trocar dados e, a partir disso, executarem uma função conjunta. As APIs podem ser classificadas de acordo com o tipo de interoperabilidade que ocorre em uma aplicação.
Clique nas abas a seguir para conhecer alguns tipos de APIs.
Utilizadas internamente para as aplicações de uma empresa, ou seja, de maneira local, quando há a necessidade de restringir o acesso aos dados; por exemplo, em empresas de e-commerce.
Podem ser utilizadas livremente e ficam disponíveis gratuitamente para integração em qualquer projeto; por exemplo, Twitter e Facebook.
Utilizadas entre empresas parceiras de negócios; por exemplo, uma empresa de e-commerce e a transportadora que lhe presta serviço.Utilizadas entre empresas parceiras de negócios; por exemplo, uma empresa de e-commerce e a transportadora que lhe presta serviço.
O termo REST foi introduzido pelo cientista da computação Roy Fielding na sua dissertação em 2000, em que apresentou um conjunto de restrições de arquitetura de sistemas distribuídos. REST pode ser empregado com outro protocolo, mas geralmente a transferência de dados é feita utilizando o protocolo HTTP (versão 1.1), conforme mostra a imagem a seguir.
Saiba Mais...
Clique aqui e conheça a dissertação de Roy Fielding.
Diferente de outros protocolos, o REST não é restrito ao arquivo XML, podendo suas informações serem retornadas em JSON, YAML ou outro formato especificado.
Uma solicitação feita a URI (http://localhost:5000/api/livros) poderá retornar uma resposta nos formatos mencionados.
As mensagens de resposta às requisições, geralmente, têm o formato de arquivo XML (Extensible Markup Language - Linguagem Extensível de marcação) ou JSON (JavaScript Object Notation), pois ambos apresentam os dados de modo simplificado (no formato texto), o que facilita a manipulação por outras aplicações.
JSON pode ser usado em muitas linguagens de programação. Cada arquivo JSON contém pares de chave-valor e podem conter somente um objeto ou uma lista deles.
A imagen mostra a representação de um XML e JSON.
<id>1</id>
<nome>Helena</nome>
<sobrenome>Strada</sobrenome>
Para uma API ser considerada ser do tipo RESTful, ela precisa aplicar os critérios de:
Arquitetura cliente/servidor (separação entre as camadas) com solicitações gerenciadas por HTTP. |
Comunicação stateless entre cliente e servidor. Para cada requisição solicitada, nenhuma informação do cliente pode ser armazenada para a próxima requisição. |
Armazenar dados em cache para melhorar a performance, reduzir e otimizar o tempo de resposta entre cliente e servidor. |
Ter uma interface uniforme entre os componentes. |
Sistema de camadas responsáveis por separar as responsabilidades |
Boas práticas
Ou
Definições:
Cada operação utilizará um verbo HTTP para a ação realizada.
Na tabela abaixo, você pode visualizar o método HTTP e sua correspondência aos comandos SQL apresentados.
Para conhecer um exemplo na prática, clique aqui.
API é um dos recursos mais utilizados, pois possibilita a integração entre diferentes sistemas, geralmente utilizando o protocolo HTTP e retornando as informações sobre seus recursos em formato JSON (por sua leveza). Dessa forma, as aplicações web e mobile conseguem ler, renderizar e criar interfaces visuais únicas para cada dispositivo, utilizando a mesma fonte de informação.
Para aplicar os conceitos apresentados, vamos criar um projeto para listar livros que serão armazenados, lidos e manipulados de um banco de dados SQL Server, para que você compreenda como os dados são armazenados e as informações são dinâmicas.
A seguir conheça a estrutura que será utilizada no desenvolvimento do projeto.
Método | Endpoint | Descrição | Corpo da solicitação | Corpo da resposta |
---|---|---|---|---|
GET | /api/livros | Obter todos os livros | Nenhum | Lista de livros |
GET | /api/livros/{id} | Obter um livro por um identificador | Nenhum | Um livro |
POST | /api/livros | Adicionar um livro | Dados do livro | Nenhum |
PUT | /api/livros/{id} | Atualizar os dados de um livro existente | Dados do livro | Nenhum |
DELETE | /api/livros/{id} | Excluir um livro | Nenhum | Nenhum |
O diagrama a seguir apresenta o design do que será construído:
ASP.NET Web API é uma estrutura que facilita o processo de construção de serviços HTTP (APIs Web) sobre o .NET Framework, possibilitando disponibilizar os recursos para clientes web, mobile e desktop.
IDE significa Integrated Development Environment ou Ambiente de Desenvolvimento Integrado. São ferramentas que auxiliam o processo de desenvolvimento com a ajuda de utilitários integrados. Eles contam com destaque da sintaxe, utilizando recursos visuais de identificação, alguns possuem recursos de visualização do diagrama de classes da sua aplicação.
A documentação é importante por descrever as funcionalidades que compõem a API, quais são os serviços disponibilizados, quais são os retornos e argumentos necessários para realizar as operações, como requests e responses (código de status).
Saiba Mais...
Clique aqui e conheça um exemplo de documentação do GitHub.
O Swagger é um conjunto de ferramentas open source que auxilia na construção de documentações possibilitando a geração automática e interativa das documentações. https://swagger.io/
Para conhecer um exemplo na prática, clique aqui.
1. Os métodos de requisição HTTP são:
Atenção
Selecione uma alternativa.
Parabéns! Resposta correta.
A alternativa correta é C. Os métodos de requisição HTTP são POST, GET, PUT, DELETE.
Ops! Tente novamente.
Lembre-se de que há correspondência entre as requisições HTTP, os comandos SQL e o CRUD.
Resposta incorreta.
A resposta correta está representada na alternativa c.
O método SendKeys
simula a entrada de dados. Quando passado com um texto entre aspas, o sistema simulará o acesso ao elemento pelo findElement
e digitará o texto que constar entre aspas, em nosso caso, Teste.
Os métodos de requisição HTTP são POST, GET, PUT, DELETE. Retome o tópico Restfull.
2. JSON é:
Atenção
Selecione uma alternativa.
Parabéns! Resposta correta.
JSON é um formato de texto para troca de dados entre dispositivos e sistemas.
Ops! Tente novamente.
Lembre-se de que o JSON e o XML podem ser renderizados em diversos sistemas.
Resposta incorreta.
A resposta correta está representada na alternativa c.
JSON é um formato de texto para troca de dados entre dispositivos e sistemas. Retome o tópico JSON.
3. Assinale as afirmativas verdadeiras:
Atenção
Preencha uma ou mais alternativas.
Parabéns! Respostas corretas.
APIs são interfaces, nem sempre visuais, que possibilitam a comunicação entre sistemas. Há vários tipos de APIs e elas podem retornar em JSON ou XML. Em um restaurante, as APIs seriam o garçom, que levam o pedido do cliente para a cozinha.
Ops! Tente novamente.
Lembre-se de que APIs foram desenvolvidas para ser a ponte entre sistemas.
Resposta(s) incorreta(s).
As alternativas corretas são A e D. APIs são interfaces, nem sempre visuais, que possibilitam a comunicação entre sistemas. Há vários tipos de APIs e elas podem retornar em JSON ou XML. Em um restaurante, as APIs seriam o garçom, que levam o pedido do cliente para a cozinha. Retome o tópico API.
Você estudou o que é uma API, REST, RESTful, como utilizar o protocolo HTTP na solicitação de recursos e como disponibilizar uma interface única capaz de dispor no formato JSON um resultado esperado para que a interface mobile e web construam suas próprias formatações.
No próximo desafio...
Você aprenderá como documentar todos os endpoints que foram disponibilizados neste desafio e como restringir o acesso para usuários autorizados.
Aviso
Parece que você já iniciou o curso, você pode: