Desenvolvimento de APIs

Boxe inicial que contém o nome da unidade curricular: “Codificação Front-End”. Dentro dele, há duas telas de desktop; na primeira, há parte de um código HTML; na segunda tela, há linhas coloridas representando o código e a palavra HTML bem legível.
Boxe inicial que contém o nome da unidade curricular: “Codificação Front-End”. Dentro dele, há duas telas de desktop; na primeira, há parte de um código HTML; na segunda tela, há linhas coloridas representando o código e a palavra HTML bem legível.
Role para baixo

Para Começar

Este material aborda conceitos relacionados a Desenvolvimento de APIs.

Esperamos que você desenvolva, no decorrer de seus estudos, as seguintes capacidades:

  • Desenvolver a API do aplicativo, disponibilizando os recursos para leitura, escrita, atualização e deleção do projeto.
  • Restringir o acesso aos recursos da API aos usuários autenticados, visando a integridade e segurança da informação.

Para desenvolver tais capacidades, você deverá estudar os seguintes temas:

  • Métodos de requisição HTTP.
  • Padrão Model View Control (MVC).
  • API.
  • Linguagem de programação para APIs.

O estudo desses temas será necessário para que você resolva a situação-problema a seguir. Então, avance para conhecê-la.

Situação-Problema

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:

  • Ler todos os projetos (título, status, data de início, tecnologias/requisitos/área);
  • Buscar informações somente de um projeto;
  • Deletar um projeto;
  • Atualizar todas as informações de um projeto ou somente uma informação específica;
  • Disponibilizar a documentação da API;
  • Retornar os status de respostas corretos de acordo com as melhores práticas;
  • Retornar os dados em formato JSON;
  • Utilizar frameworks para a criação de API;
  • Disponibilizar o recurso de deletar um projeto, somente para usuários que possuem permissão;

Para concluir esse projeto, você deverá solucionar os seguintes desafios.

Clique nos botões a seguir para conhecê-los:

Desafio 1

Desafio 2

Desafio 1

Nesta etapa, você deverá resolver o desafio 1:

  • Desenvolver a API do aplicativo, disponibilizando os recursos para leitura, escrita, atualização e deleção do projeto.

Para isso, você estudará os seguintes conteúdos:

  • Métodos de requisição HTTP.
  • Get, Put, Post, Patch, Delete.
  • Padrão Model View Control (MVC).
    • Organização de arquitetura de sistemas.
  • API.
    • Definição.
    • Formatos.
    • Aplicação.
    • Protocolo de comunicação.
    • Metodologias ágeis para desenvolvimento de APIs.
  • Linguagem de programação para APIs.
    • Funcionalidades para APIs.
    • Técnicas de depuração.
    • Documentação do sistema.
    • Técnicas de programação e controle.
    • Frameworks.
    • Status de respostas.
    • Tratamento de exceções.
    • Técnicas de formato de comunicação.
    • Formatos e requisição.
    • XML.
    • JSON.
Ilustração de uma tela de notebook; nela, há uma lupa cinza que amplia a palavra “desafio”. Na tela do notebook, há a palavra HTML e linhas coloridas. Ilustração de uma tela de notebook; nela, há uma lupa cinza que amplia a palavra “desafio”. Na tela do notebook, há a palavra HTML e linhas coloridas.

Desenvolvimento de APIs

Clique no player a seguir para acessar o vídeo sobre o Desenvolvimento de APIs.

Pré-requisito e roteiro de configuração

Para este desafio será necessário realizar:

  • Instalação do Visual Studio 2019.
  • Instalação do SQL Server.
  • Instalação do SSMS ou Azure Data Studio.
  • Instalação do Insomnia ou Postman.
  • Download do arquivo db.sql que contém as criações das tabelas do banco de dados que serão utilizadas durante o desenvolvimento do projeto.

Arquivos

Caso não tenha o Visual Studio 2019 instalado, clique aqui.

Caso não tenha o SQL Server, clique aqui.

Caso não tenha o SSMS configurado, clique aqui.

Caso não tenha o Insomnia ou Postman, clique aqui.

Clique aqui, para fazer o download do arquivo db.sql.

Após a instalação das ferramentas mencionadas realize o passo a passo a seguir para iniciar o projeto.

PDF

Clique aqui para baixar o tutorial com o passo a passo.

A seguir vamos conhecer os seguintes tópicos:

  • Protocolo HTTP focado em requisições e respostas;
  • O que são API’s, REST, RESTful;
  • Como construir API’s Web utilizando padrões de arquitetura.

É importante compreender como as solicitações na web são realizadas e quais protocolos e regras são utilizados.

Métodos de requisição http

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.

0/0

No campo de pesquisa ou endereço digite http://sp.senai.br e depois pesquisar ou enter.

Ao realizar essa ação, o cliente (navegador web) faz uma solicitação (ou request) para o servidor responsável por esse endereço. O servidor realiza os procedimentos necessários e devolve uma resposta ao cliente (ou response). A informação recebida, geralmente um documento HTML será renderizado no navegador web e a resposta será apresentada.

Apresentação do site após o navegador renderizar as informações recebidas do servidor.

keyboard_arrow_left keyboard_arrow_right

Requisições

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:

  • Os métodos HTTP, também chamados de verbos, definem a ação que o usuário deseja realizar e cada um implementa uma semântica diferente.
  • O método GET é utilizado para buscar um recurso e o método POST é utilizado para enviar uma informação em um formulário e alterar informações (como um usuário e senha).
  • É um endereço virtual com um caminho que indica onde está o que o usuário procura, e pode ser tanto um arquivo, como uma máquina, uma página, um site, uma pasta etc. Um URL é composto de um protocolo, que pode ser tanto HTTP, que é um protocolo de comunicação, FTP (do inglês File Transfer Protocol ou Protocolo de Transferência de Arquivo), que é uma forma rápida de transferir arquivos na internet, entre outros.
  • São as informações adicionais ao servidor que possui a estrutura em [uma cadeia de caracteres: valor].
  • Versão do protocolo HTTP que será utilizado.
  • Como enviar dados em um formulário HTML para serem processados pelo recurso especificado.

Respostas

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).

PDF

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.

API

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.

Tipos de APIs

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.

REST (Transferência Representacional de Estado)

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.

Json e XML

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>

								
							

RESTful

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

  • Utilizar os métodos HTTP correspondentes para as ações que deseja realizar as requisições.
  • Escolha plural ou singular nas solicitações de recursos.
  • /api/cliente
  • /api/produto
  • /api/jogo

Ou

  • /api/clientes
  • /api/produtos
  • /api/jogos

Definições:

  • REST - Conjunto de restrições de arquitetura
  • Restful - API que atende a todas as regras
  • JSON - Formato da resposta

Como funciona

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.

PDF

Para conhecer um exemplo na prática, clique aqui.

Desenvolvendo uma api

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

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

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.

PDF

Clique aqui para realizar o passo a passo de como criar o projeto de API no Visual Studio Community.

O Visual Studio Community é uma IDE gratuita para mais informações, clique aqui.

Documentação do sistema

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.

Swagger

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/

PDF

Para conhecer um exemplo na prática, clique aqui.

Vamos Praticar

1. Os métodos de requisição HTTP são:

  1. INSERT, SELECT, UPDATE, DELETE.
  2. CREATE, READ, UPDATE, DELETE.
  3. POST, GET, PUT, DELETE.
  4. URL, URI, URN.

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 é:

  1. uma linguagem de programação para fazer requisições entre dispositivos e sistemas.
  2. uma linguagem de marcação para troca de dados entre dispositivos e sistemas.
  3. um formato de texto para fazer requisições entre dispositivos e sistemas.
  4. um formato de texto para troca de dados entre dispositivos e sistemas.

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:

  1. As APIs são interfaces que possibilitam a comunicação entre sistemas.
  2. As APIs são sites de interface visual para acessar qualquer banco de dados.
  3. As APIs devem ser sempre públicas mas algumas podem possuir segurança privada.
  4. Uma API pode retornar dados em XML ou JSON.
  5. Em analogia a um restaurante, as APIS seriam a cozinha, pois realizam o pedido sem interferência do cliente.

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.

Neste desafio...

Situação-problema | Desafio 1

Ilustração de uma personagem sem gênero nem raça definidos de pele azul subindo uma escada. A escada possui grafismos de com engrenagens e fios conectores, e elementos remetendo a elementos de rede de Internet, nas cores branco as, azuis azul e amarelo. A personagem tem pele azul, cabelos pretos, veste camiseta branca, calça azul escuro e sapatos magenta. No topo da escada há um letreiro com a palavra está escrito “sucesso”.

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.

Orientações de Navegação

Veja abaixo as orientações de como navegar pelo curso.

No topo da página é exibido o nome da unidade curricular.

Indicador de progresso da aula.

Acesso aos principais recursos da página.

Direciona ao início do curso, bem antes do primeiro desafio.

Menu com a relação das seções da unidade curricular.

Exibe as orientações de navegação.

Aumenta ou diminui o tamanho da fonte.

Exibe a tela de glossário da unidade.

Ajusta o contraste da tela.

Exibe a tela de créditos do curso.

Orientações para os exercícios:

Os exercícios contidos nos desafios do curso não fazem parte da composição da nota.
Para refazer os exercícios, atualize a página clicando no ícone         , localizado ao lado da barra de endereço do navegador, ou pressione a tecla F5.

Título da seção

Buscar outra seção dentro do desafio

Glossáriospellcheck

Endpoint: URL onde seu serviço pode ser acessado por uma aplicação cliente.

Hashes: hash é uma senha gerada através de criptografia, usando uma chave ou certificado.

Créditos

CONFEDERAÇÃO NACIONAL DA INDÚSTRIA – CNI


Robson Braga de Andrade

Presidente

DIRETORIA DE EDUCAÇÃO E TECNOLOGIA – DIRET


Rafael Esmeraldo Lucchesi Ramacciotti

Diretor de Educação e Tecnologia

SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL – SENAI – CONSELHO NACIONAL


Robson Braga de Andrade

Presidente

SENAI – DEPARTAMENTO NACIONAL


Rafael Esmeraldo Lucchesi Ramacciotti

Diretor-Geral

Gustavo Leal Sales Filho

Diretor de Operações

SENAI – DEPARTAMENTO NACIONAL

UNIDADE DE EDUCAÇÃO PROFISSIONAL E TECNOLÓGICA – UNIEP

Felipe Esteves Morgado

Gerente Executivo

Luiz Eduardo Leão

Gerente de Tecnologias Educacionais

Anna Christina Theodora Aun de Azevedo Nascimento

Adriana Barufaldi

Bianca Starling Rosauro de Almeida

Laise Caldeira Pedroso

Coordenação Geral de Desenvolvimento dos Recursos Didáticos Nacionais

Senai - Departamento Regional de São Paulo


Ricardo Figueiredo Terra

Diretor Regional

Cassia Regina Souza da Cruz

Gerente de Educação

Izabel Rego de Andrade

Supervisora do Centro SENAI de Tecnologias Educacionais

Claudia Baroni Savini Ferreira

Coordenação do Desenvolvimento do Curso

Vitoria Stefany Bessera Pinho

Elaboração de Conteúdo

Adilson Moreira Damasceno

Orientador de Práticas de Educação a Distância

Paula Cristina Bataglia Buratini​

Coordenação da Produção do Curso

Cristina Yurie Takahashi​

Juliana de Souza​

Katya Martinez Almeida​

Design Educacional

Cleriston Ribeiro de Azevedo​

Fabiano José Moura​

Juliana Rumi Fujishima

Ilustrações

Camila Ciarini Dias

Produção e Edição de Vídeos

Aldo Toma Junior

Web Designer

Rafael Santiago Apolinário

Programação

Aviso

Parece que você já iniciou o curso, você pode: