Cleandev Api Template
El objetivo es facilitar la creación de APIS con flask de una forma sencilla, para ellos se ha creado un wrapper
que añade las librerias Flask-Cors y Flask-RESTful y las preconfigura para que solo tengas que dedicar tiempo
en programar tu API.
Diagrama
ApiFactory
No hay mucho que decir en este punto, ya que solo hay que configurar algunos parámetros en el archivo de configuración
y pedirle a la factoría que nos cree una instancia de una app de Flask y ya esta, como se muestra en el siguiente
ejemplo.
from flask import Flask
from api_template import ApiFactory
from api_template.config import _debug
from werkzeug.serving import run_simple
app_factory: ApiFactory = ApiFactory()
app: Flask = app_factory.app
if __name__ == '__main__':
run_simple('127.0.0.1', 5000, app, use_debugger=_debug, use_reloader=True)
Para crear los recursos del API se sigue los mismos pasos que para Flask-RESTful con una pequeña variante, y es que
deberemos configurar como se mostrara a continuación un paquete donde iran dichos recursos y cada clase que representa
un recurso debe implementar un metodo que retornara una lista que contendrá la dirección del endpoint que se quiera
agregar de forma automatica en lugar del tradicional api.add_resource(HelloWorld, '/') como pone en la documentación.
Agregando recursos
A continuacion veremos la forma de añadir un recurso a nuestra API.
import json
from flask_restful import Resource
from flask import request, Response
from flask_jwt_extended import create_access_token
class Login(Resource):
def get(self):
data: dict = {'message': 'OK', 'data': create_access_token(identity='test@mail.com')}
return Response(json.dumps(data), status=200, mimetype='application/json')
def post(self):
# Example login
email = request.json.get('email')
password = request.json.get('password')
if email == 'test@mail.com' and password == 'test':
data: dict = {'message': 'OK', 'data': create_access_token(identity=email)}
return Response(json.dumps(data), status=200, mimetype='application/json')
else:
data: dict = {'message': 'User not found', 'data': {}}
return Response(json.dumps(data), status=404, mimetype='application/json')
@staticmethod # Este metodo agrega automaticamente el endpoint al API
def endpoint() -> list:
return ['/login']
Config
Para que esto funcione correctamente deberemos indicarle en el archivo de configuración el nombre del paquete donde se encuentran los recursos, puedes ponerlos en un unico fichero o en multiples ficheros dentro del mismo paquete para que puedas organizarlo de la forma que desees
[API_TEMPLATE]
path_resources_api = resources
Metadata
Release files for cleandev-api-template 0.2.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| cleandev-api-template-0.2.2.tar.gz | 4.3 kB | Without provenance | Details for cleandev-api-template-0.2.2.tar.gz |
Release files / cleandev-api-template-0.2.2.tar.gz
| Download URL | cleandev-api-template-0.2.2.tar.gz |
|---|---|
| Size | 4.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4466b9a9e21dffd1c70df7963399dbbf529934de3190613709540a06eec3456c
|
|
BLAKE2b-256 checksum How to use checksums |
4af96252c6cb7948d527262838161f51d7f729fe02bd53222a30124142aab73d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.0 CPython/3.9.10
|
Security for cleandev-api-template 0.2.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.