Skip to main content

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

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)

Source distribution for cleandev-api-template 0.2.2
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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page