Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Python
Code

Criar uma API REST usando o EVE

by
Difficulty:IntermediateLength:MediumLanguages:

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

O Python é uma das linguagens de programação mais simples de ler e escrever de todos os tempos. Ao longo dos anos a popularidade do Python tem crescido e é usada extensivamente no desenvolvimento de aplicações web, scripting, criação de jogos, computação científica, etc.

O Flask é uma framework para desenvolvimento de aplicações web em Python que está a ganhar popularidade devido à sua facilidade de utilização por programadores iniciantes ao Python. Neste tutorial, vamos dar uma vista de olhos ao EVE, uma framework para desenvolvimento de APIs REST baseada em Flask, MongoDB e Redis. Da documentação oficial:

Tendo por base o Flask, MongoBD, Redis e um conjunto de boas intenções, o EVE permite de forma simples o desenvolvimento e distribuição de serviços altamente flexíveis, com todos os recursos de serviços web RESTful.

O que vamos criar

Neste tutorial, vamos ver como construir APIS REST usando a framework EVE. Depois, usando o AngularJS vamos projetar o front-end para uma app simples e torná-la funcional consumindo as APIs REST construídas usando o EVE. Neste tutorial, serão implementadas as seguintes funcionalidades:

  • Criação de API User
  • Validação da API User
  • API para adicionar Items
  • API para eliminar Items
  • API para alterar/editar Items

Vamos começar

Instalação

Vamos usar o pip para instalar o EVE

Vamos usar o MongoDB como base de dados. Consulte a documentação oficial para informação de como instalar no seu sistema operativo.

Criação da API básica

Crie uma pasta para o projeto chamada PythonAPI. Siga para a pasta PythonAPI e crie um ficheiro chamado api.py. No ficheiro api.py importe o EVE e crie um objecto EVE.

De seguida, faça run da app quando o programa estiver a ser executado como um programa principal.

Execute o seu MongoDB usando o seguinte comando:

Como pode ser observado, é necessário indicar a path para os ficheiros da db. Simplesmente crie a pasta data/db no seu sistema de ficheiros e execute o comando acima.

A par com a instancia em execução do MongoDB, o EVE requer ainda um ficheiro de configuração com informações sobre os recursos da API. Assim, na pasta PythonAPI crie mais um ficheiro chamado settings.py e adicione-lhe o seguinte código:

O código acima informa o EVE que o recurso user está disponível.

Salve todos os ficheiros e execute api.py:

A API deve aparecer online como apresentado:

Python API running on localhost port 5000

Vamos usar o Postman REST Client para enviar pedidos às APIs. É gratuito e pode ser instalado com um simples clique. Uma vez terminada a instalação, lance a app e siga para o endereço da API (http://127.0.0.1:5000/) e clique send. Deve obter a seguinte resposta:

Response on launching app

Dado que não se chamou nenhum recurso específico da API, serão apresentados todos os recursos disponíveis. Agora tente chamar o recurso user e deve obter a resposta específica para o user.

Crie e Valide a API User

Crie a API User

Vamos começar por desenvolver uma API para criar e registar um user para a nossa aplicação. O user deve conter campos como First Name, Last Name, Username, Password e Phone Number.

Primeiro temos de definir o schema para um user. O schema define os campos e respectivos tipos de dados de campos chave. Abra o ficheiro settings.py e modifique o DOMAIN definindo o schema tal como apresentado:

Como pode ler no código acima, definimos os campos chave necessários para criar um user e os tipos de dados no schema. Salve as alterações e execute api.py. A partir do cliente Postman tente fazer um pedido do tipo POST com os parametros necessários para http://127.0.0.1/user tal como apresentado:

POST request to user

Como resposta ao POST, é emitido um error 405 Method Not Allowed. Por omissão o EVE aceita apenas pedidos GET. Se pretendemos usar outros métodos, temos de os definir explicitamente. Abra o ficheiro settings.py e defina os métodos para os recursos com apresentado: 

Salve as alterações e execute api.py. Agora tente novamente o POST para user, deve obter a resposta abaixo:

POST request to User

Como pode ser observado o POST acima foi executado com sucesso. Não se definiram as configuração para acesso à base de dados no ficheiro settings.py, por isso o EVE completou o pedido usando a instancia em execução local do MongoDB. Vamos logar na shell do MongoDB e observar o registo recém criado. Com a instância do MongoDB em execução, active a shell mongo:

Uma vez na shell do mongo, listar todas as base de dados disponíveis.

Deve existir uma base de dados eve. Entre na base de dados eve.

Corra o comando show para listar as tabelas na base de dados eve.

As tabelas listadas devem conter uma tabela chamada user. Liste os registos da tabela user usando o seguinte comando:

Aqui estão os registos seleccionados a partir da tabela user:

Selected records from user table

Validar a API User

De seguida vamos criar uma API para validar um user existente. Por norma, se fizermos um pedido get para o ponto terminal user (http://127.0.0.1:5000/user), serão devolvidos todos os registos de utilizadores da base de dados. Precisamos implementar duas coisas aqui. Primeiro é necessário autenticar o user usando o primeiro nome e password, em segundo lugar é necessário obter os detalhes do user da base de dados se a autenticação for feita com sucesso.

Para se obterem os detalhes com base no primeiro nome, precisamos de adicionar um campo para pesquisa no DOMAIN no ficheiro settings.py.

Como pode ver no código acima, adicionamos o campo para pesquisa username.  Agora quando um request GET é enviado para o endereço http://127.0.0.1:5000/user/<username> vão ser retornados os detalhes do user com um username em particular. Quando se faz um pedido a um user em particular, vamos também enviar o username e password para autenticação.

Vamos usar um sistema de autenticação simples para verificar um user em particular baseado no username e password. Primeiro, temos de importar a classe Basic Auth do EVE. Crie a class chamada Authenticate para implementar a autenticação como apresentado:

Agora, quando o recurso é um user e o request um método GET, o utilizador será autenticado. Se a autenticação é feita com sucesso, os detalhes do user com o firstname passado ao endpoint da API serão devolvidos. Vamos também restringir a criação de utilizadores usando o username e password. Assim, so o método for POST e o endpoint da API é user, vamos verificar e validar o username e password. Assim, aqui fica a classe Authenticate completa:

É necessário agora passar a o nome da class Authenticate quando inicializarmos a API. Modifique o código de inicialização da API de acordo com o código apresentado:

Salve todas as alterações e execute api.py. Tente enviar um suth request básico com username e password a partir do Postman para http://127.0.0.1/user/username (substitua usermane por qualquer um dos existentes) Se a autenticação for bem sucedida, deve obter os detalhes do utilizador na resposta tal como apresentado:

Validate User API response

Adicionar, Apagar e Alterar Items

Adicionar a API Item

Para criar a API Add item, tudo o que precisamos é de criar um novo schema para o item no ficheiro settings.py.

A API Add Item vai ajudar cada utilizador logado a adicionar items. Vamos salvar o item junto do username do utilizador que inseriu o item. Salve as alterações e tente fazer um POST para http://127.0.0.1/item tal como ilustrado: 

Add Item API request and response

API para Apagar um Item

Para apagar um item criado por um utilizador, tudo o que vamos precisar é de chamar o endpoint do item /item_id. Mas invocar simplesmente o método DELETE não vai eliminar o item- Para apagar um item, é necessário fornecer também uma _etag, relacionada com o item a eliminar. Uma vez que item id e _etag coincidam, o item é eliminado da base de dados. Aqui se apresenta como o método DELETE é chamado em cada endpoint de items.

Delete Item API

API para Alterar um Item

A API Update é em tudo semelhante à API Delete. Tudo o que temos de fazer é enviar um request PATCH como item id e _etag e os campos que pretendemos actualizar. Veja como os detalhes de um item são alterados:

Update Item API

Conclusão

Neste tutorial, percebemos como dar os primeiros passos na ciração de APIS usando a framework Python EVE. Criamos umas APIS simples para operações CRUD que vamos usar na próxima parte da série quando criarmos a APP AngularJS.

O código fonte deste tutorial está disponível no GitHub.

Deixe nos comentários abaixo as suas impressões.

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.