Curso: API Python
Aula 1
© Copyright 2018-2019 www.infinityschool.com.br - All Rights
Tema da aula:
Aula 1 - Conceitos essenciais sobre APIs
Nesta aula você conhecerá:
• O que é uma API?
• Diferença entre REST e RESTFul
• Endpoints
• Exemplos de API pública
• Requests e verbos HTTP
• Responses e status code
• Segurança de API
• Configuração de ambiente de desenvolvimento
• Anaconda & VSCode
• Ambiente virtual
© Copyright 2018-2019 www.infinityschool.com.br - All Rights Reserved
O que é uma API?
API’s significa Application Programming Interface (Interface de Programação de Aplicação). São
mecanismos que permitem que dois componentes de software se comuniquem usando um conjunto de
definições e protocolos.
De forma prática, uma API é um programa que irá fornecer dados para uma aplicação por meio de
troca de mensagens entre um ou mais clientes e um servidor.
API Cliente
(Usuário)
© Copyright 2018-2019 www.infinityschool.com.br - All Rights Reserved
O que é uma API?
Por exemplo, o sistema de software do instituto meteorológico contém dados meteorológicos diários. O
aplicativo meteorológico em seu telefone “fala” com este sistema por meio de APIs e mostra
atualizações meteorológicas diárias no telefone.
Servidor Cliente
(Sistema meteorológico) (Usuário, TV,
celular, notebook)
© Copyright 2018-2019 www.infinityschool.com.br - All Rights Reserved
REST e Restful
Arquitetura REST
Modelo REST (Representional State Transfer) é um padrão de arquitetura que estabelece as regras para
a construção de um serviço Web, criado por Roy Fielding. REST é o modelo de API web mais popular
atualmente, onde um cliente envia dados ao servidor e o servidor responde um novo conjunto de dados
resultantes do processamento.
RESTFul é uma API criada utilizando a arquitetura REST, ou seja, que segue suas regras e mantém
suas características.
© Copyright 2018-2019 www.infinityschool.com.br - All Rights Reserved
REST e Restful
API RESTFul
As principais características são:
• Cliente-servidor: define as responsabilidades dos participantes de forma clara;
• Stateless: A conexão é sem estado, logo, o servidor não deve manter sessão com cliente;
• Cache: O servidor deve analisar quando uma determinada informação deve ser mantida em cache;
• Interface uniforme: Uso correto dos verbos HTTP.
© Copyright 2018-2019 www.infinityschool.com.br - All Rights Reserved
ENDPOINTS
Um endpoint é um local onde as requisições ou chamadas à API são atendidas, isto é, são endereços
de URL utilizados para comunicação entre uma API e um sistema externo.
Requisição
Resposta
Servidor Cliente
(Sistema meteorológico) (Usuário)
© Copyright 2018-2019 www.infinityschool.com.br - All Rights Reserved
ENDPOINTS
Exemplos de API Públicas:
• IntegraSUS (https://integrasus.saude.ce.gov.br/api/coronavirus/)
• openweathermap (https://openweathermap.org/api)
• Consulta de CEP (https://viacep.com.br/)
• Covid19 Brazil (https://covid19-brazil-api-docs.vercel.app/)
• IBM Watson (https://www.ibm.com/watson/products-services)
© Copyright 2018-2019 www.infinityschool.com.br - All Rights Reserved
Request
A comunicação com uma API é feita por meio de troca de mensagens entre um usuário ou aplicação e
uma API. O usuário faz uma chamada a API por meio de uma requisição HTTP (request) e a API retorna
o resultado da requisição com uma resposta (response).
Request
Response
Servidor Cliente
(Sistema meteorológico) (Usuário)
© Copyright 2018-2019 www.infinityschool.com.br - All Rights Reserved
VERBOS HTTP
Os métodos HTTP, também chamados de verbos HTTP, indicam os diferentes tipos de operações que o
cliente pode realizar para manipular os dados através de requisições para a API.
Código HTTP Resposta
POST É utilizado para criar um novo registro no banco de dados.
GET É utilizado para ler registros no banco de dados.
PUT É utilizado para atualizar um registro no banco de dados.
PATCH É utilizado para atualizar parte de um registro no banco de dados.
DELETE É utilizado para deletar um registro no banco de dados.
© Copyright 2018-2019 www.infinityschool.com.br - All Rights Reserved
Response
A resposta a uma requisição pode ser formada um poum código, indicando o resultado do
processamento, e, quando bem sucedida, um conjunto de dados em formato json.
Json: JavaScript Object Notation é uma forma de trocar informações entre sistemas de forma leve e
rápida. O formato é caracterizado por um par de “chave e valor”.
Exemplo:
© Copyright 2018-2019 www.infinityschool.com.br - All Rights Reserved
Response
Cada código de resposta (status code) indica um possível resultado do processamento da requisição.
Exmplos: https://http.cat/
Código HTTP Resposta
400 Bad request Erro do cliente.
401 Unauthorized Não autorizado.
404 Not found Não encontrado.
500 Internal Server Error Erro no processamento do servidor.
200 OK Página acessada.
© Copyright 2018-2019 www.infinityschool.com.br - All Rights Reserved
Segurança de API
Para evitar ataques cibernéticos, como um número massivo de solicitações simultâneas, algumas API’s
possuem uma camada de segurança de autenticação, que faz com que um cliente precise ser
autenticado para fazer requisições.
Autenticação é o processo de verificar a identidade. Nesse contexto, o processo de autenticação pode
ser realizado por meio de:
• Chave de API: designa-se uma chave ou uma sequência de caracteres exclusiva ao cliente de API
que apenas ele e o serviço de API conheçam. A chave é incluída a cada solicitação para que o
servidor saiba de onde veio a requisição.
• Autenticação básica (usuário e senha): Semelhante chave. O usuário e senha são anexados à
requisição.
• Token OAuth: O servidor pode solicitar uma autorização de um servidor de confiança,
• TLS Mútuo: TLS é o protocolo que cria uma conexão autenticada entre o cliente e o servidor ao
carregar páginas web.
© Copyright 2018-2019 www.infinityschool.com.br - All Rights Reserved
Configuração do Ambiente
Anaconda
• Anaconda é um ambiente de desenvolvimento que inclui python e disponibiliza um conjunto de
aplicações para fácil instalação por meio de sua interface, incluindo VS Code.
• O Anaconda pode ser baixado na página oficial do projeto:
https://www.anaconda.com/products/distribution
© Copyright 2018-2019 www.infinityschool.com.br - All Rights Reserved
Configuração do Ambiente
Criação de um ambiente virtual
• Abra o terminal do anaconda e digite:
• conda create --name nome_do_ambiente
• Aguarde a criação do ambiente. Após a criação digite:
• conda activate nome_do_ambiente
• Pronto! Agora basta instalar as bibliotecas e aplicações necessárias para o seu projeto.
© Copyright 2018-2019 www.infinityschool.com.br - All Rights Reserved
Configuração do Ambiente
Configuração do python no VS Code
• Ative seu ambiente virtual pelo terminal do anaconda;
• Abra o VS Code
• Na tela inicial use o atalho: Ctrl + shift + P e digite:
• Python: Select Interpreter
• Selecione o python correspondente ao seu ambiente
• Pronto! Ambiente configurado.
© Copyright 2018-2019 www.infinityschool.com.br - All Rights Reserved
Configuração do Ambiente
Instalação de bibliotecas
• Abra o terminal do anaconda e digite:
• pip install uvicorn (servidor de aplicação para o fastapi)
• pip install fastapi (biblioteca para construção de API)
ou
• conda install -c conda-forge uvicorn -y (servidor de aplicação para o fastapi)
• conda install -c conda-forge fastapi -y (biblioteca para construção de API)
• Pronto! Ambiente configurado e pronto para iniciar o desenvolvimento das API’s.
© Copyright 2018-2019 www.infinityschool.com.br - All Rights Reserved
71 3901 1052 | 71 9 9204 0134
@infinity.school
www.infinityschool.com.br
Salvador Shopping Business | Torre Europa Sala
310 Caminho das Árvores, Salvador - BA CEP:
40301-155
© Copyright 2018-2019 www.infinityschool.com.br - All Rights