Criando API em Python utilizando Flask

Neste post vamos criar uma API em Python utilizando Flask. O objetivo é mostrar de um jeito simples e prático o funcionamento básico do Flask para despertar seu interesse em se aprofundar neste framework maravilhoso.

⚠️ Estou considerando que você já tem o Python e Pip instalado em sua máquina.
⚠️ Irei utilizar o virtualenv para isolar as bibliotecas utilizadas, mas isto é opcional. 
Para instalar no Ubuntu digite pip3 install virtualenv

API com Flask

Vou criar um diretório para nosso projeto onde colocarei o virtualenv e também o código da nossa aplicação:

cesar@coffops-labs:~$ mkdir FlaskHelloCoffops
cesar@coffops-labs:~$ cd FlaskHelloCoffops/

Agora vamos criar o virtualenv:

cesar@coffops-labs:~/FlaskHelloCoffops$ virtualenv app_env

**Saída:**
created virtual environment CPython3.8.10.final.0-64 in 1092ms
  creator CPython3Posix(dest=/home/cesar/FlaskHelloCoffops/app_env, clear=False, no_vcs_ignore=False, global=False)
  seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/home/cesar/.local/share/virtualenv)
    added seed packages: pip==22.0.4, setuptools==62.1.0, wheel==0.37.1
  activators BashActivator,CShellActivator,FishActivator,NushellActivator,PowerShellActivator,PythonActivator

E em seguida ativá-lo:

$ source app_env/bin/activate

Pronto. Agora que estamos dentro do virtualenv vamos instalar os pacotes do Python que iremos utilizar: Flask e Flask-RESTful:

(app_env) cesar@coffops-labs:~/FlaskHelloCoffops$ pip install Flask

Saída:
...
Installing collected packages: zipp, Werkzeug, MarkupSafe, itsdangerous, click, Jinja2, importlib-metadata, Flask
Successfully installed Flask-2.1.2 Jinja2-3.1.2 MarkupSafe-2.1.1 Werkzeug-2.1.2 click-8.1.3 importlib-metadata-4.11.4 itsdangerous-2.1.2 zipp-3.8.0
(app_env) cesar@coffops-labs:~/FlaskHelloCoffops$ pip install Flask-RESTful

Saída:
...
Installing collected packages: pytz, aniso8601, six, Flask-RESTful
Successfully installed Flask-RESTful-0.3.9 aniso8601-9.0.1 pytz-2022.1 six-1.16.0

Pacotes devidamente instalados, chegou a hora de ir para o código.

Nosso objetivo aqui é criar um endpoint que retorne o texto fixo qualquer, não vamos nos preocupar com questões de segurança como autenticação, quantidade de requisições etc, mas tenha em mente que estamos em ambiente de desenvolvimento.

Crie um arquivo chamado app.py e coloque o seguinte código:

# Importa as bibliotecas necessarios
from flask import Flask
from flask_restful import Api, Resource

# Registra um novo app dentro da variável 'app'
app = Flask(__name__)

# Registra o app como um objeto Api.
api = Api(app)

# Classe que reponderá pelo endpoint /hello no qual aceita apenas o metodo GET
class HelloCoffops(Resource):
        def get(self):
                data={"data":"Minha primeira api com Flask"}
                return data

api.add_resource(HelloCoffops,'/hello')

if __name__=='__main__':
				# Define host e porta no qual o Flask será irá executar
        app.run(debug=True, host='0.0.0.0', port=5000)

O Flask possui um servidor web embarcado que podemos usar para testar nossa aplicação, no código acima definimos o host como qualquer um e a porta padrão 5000.

Para executar digite no terminal:

(app_env) cesar@coffops-labs:~/FlaskHelloCoffops$ python app.py

**Saída:**
* Serving Flask app 'app' (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: on
 * Running on all addresses (0.0.0.0)
   WARNING: This is a development server. Do not use it in a production deployment.
 * Running on <http://127.0.0.1:5000>
 * Running on <http://172.31.52.107:5000> (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 681-497-459

No meu caso estou executando a aplicação em um servidor na nuvem, portanto para acessar devo usar o IP público + a porta 5000 no navegador.

Para interromper a aplicação aperte CONTROL + C.

Conclusão

O ponta pé inicial foi dado, você já sabe como começar a desenvolver sua aplicação utilizando Flask. Fique de olho no site e nas redes sociais da Coffops para aprender muito sobre Python, Java e banco de dados.

Veja mais em https://coffops.com/category/desenvolvimento/.

Deixe um comentário

O seu endereço de e-mail não será publicado.