Advertisement
  1. Code
  2. Flask

Construindo APIs RESTful Com Flask: Abordagem Faça-Você-Mesmo

by
Difficulty:BeginnerLength:ShortLanguages:
This post is part of a series called Building RESTful APIs With Flask.
Building RESTful APIs With Flask: An ORM With SQLAlchemy

Portuguese (Português) translation by Erick Patrick (you can also view the original English article)

Representational State Transfer (REST) é um estilo de projeto de arquitetura de desenvolvimento web que se refere à separação lógica dos recursos da API, habilitando fácil acesso, manipulação e dimensionamento. Componentes reusáveis são escritos para sere facilmente adminitrados através de requisições HTTP simples e intuitivas, como GET, POST, PUT, PATCH e DELETE (pode ter mais, mas essas são as mais usadas).

Apesa da aparência, REST não exige um protocolo ou padrão. Apenas prepara um estilo arquitetural de software para a escrita de aplicações web e APIs, resultando na simplificação de interfaces dentro e fora da aplicação. APIs de serviços web escritas seguindo os princípios REST são chamadas de APIs RESTful.

Nessa série de três partes, cobriremos maneiras diferentes que APIs RESTful podem ser criadas usando Flask, uma framework web. Nessa primeira parte, cobriremos como criar APIs REST baseadas em classes, na mão, ou seja, implementando sem uso de extensões de terceiros. Nas outras partes da série, cobriremos como lançar mão de várias extensões do Flask para construir APIs REST mais efetivas e de forma mais fácil.

Assumimos que tenha entendimento básico do Flask e boas práticas de configuração de ambientes usando virtualenv, que devem ser seguidas ao desenvolver aplicações em Python.

Instalando Dependências

Os pacotes a seguir precisam ser instalados para a aplicação que desenvolveremos.

Os comando acima deveriam instalar todos os pacotes requeridos para a aplicação funcionar.

A Aplicação Flask

Para esse tutorial, criaremos uma pequena aplicação onde teremos um modelo Product trivial. E demonstraremos como escrever uma API Restful para o mesmo. Abaixo temos a estrutura da aplicação.

Não criaremos front-end para essa aplicação já que os pontos de acesso das APIs RESTful podem ser testadas diretamente com chamadas HTTP usando vários outros métodos.

flask_app/my_app/__init__.py

No arquivo acima, a aplicação foi configurada com a inicialização das extensões e a criação da base de dados. A última declaração cria uma nova base de dados no local provido por SQLALCHEMY_DATABASE_URI se uma base de dados ainda não existir no local, caso contrário, carrega a aplicação com a base existente.

flask_app/my_app/catalog/models.py

No arquivo acima, criamos um modelo bem trivial para salvar o nome e preço de um Product (produto). Isso criará uma tabela no SQLite correspondendo ao detalhes providos no modelo.

flask_app/my_app/catalog/views.py

O grande problema desse tutorial é lidar com o arquivo acima. Flask provê um utilitário chamado visões conectáveis que nos permitem criar visões na forma de classes ao invés de funções. Despache baseado em métodos (MethodView) é uma implementação de visão conectável que permite escrever métodos correspondentes aos métodos HTTP. No exemplo acima, escrevemos métodos get() e post() correspondendo aos métodos HTTP GET e POST.

Rotas também são implementadas diferentemente, ao final do arquivo acima. Podemos especificar métodos que suportaremos para qualquer regra em particular. Qualquer outra chamada HTTP encontrará Error 405 Method not allowed.

Executando a Aplicação

Para executar a aplicação, execute o script run.py. O conteúdo do script é:

Agora execute-o na linha de comando:

Para verificar se a aplicação funciona, digite http://127.0.0.1:5000/ no navegador e uma tela simples de bem vindo deveria aparecer.

Testando a API RESTful

Para testar a API, realizaremos chamadas HTTP usando quaisquer métodos disponíveis. As GET podem ser feitas diretamente pelo navegador. As POST podem ser feitas com uma extensão para Chrome, Postman, ou pela linha de comando com curl, ou podemos usar a biblioteca requests do Python. Usaremos a biblioteca requests para efeitos de demonstração.

Façamos as GET primeiro para garantir que ainda não temos produtos criados. Pelo padrão de APIs RESTful, uma chamada parecida com /product/ deveria listar todos os produtos. Depois, criaremos alguns produtos via POST em /product/ com alguns dados. Então um GET para /product/ deveria listar todos os produtos criados. Para obter um produto em específico, um GET para /product/<id do produto> deveria funcionar. Abaixo, temos um exemplo das chamadas que podem ser feitas usando o exemplo.

Conclusão

Nesse tutorial, vimos como criar interfaces RESTful para nós mesmo usando o utilitário de visões conectáveis do Flask. Essa é a abordagem mais flexível ao criar APIs REST mas requer muito código a ser escrito.

Existem extensões que tornam a vida mais simples e automatizam bastante a implementação de APIs RESTful. Cobriremos elas nas próxima partes dessa série.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.