Saltar a contenido

Recursos (Class Resource)

Crea CRUD's con facilidad a la manera OOP con la clase base ResourceModel que le permite implementar métodos rápidamente.

Nota

Se recomienda utilizar el comando crud para agilizar este proceso.

Si estás familiarizado con Flask-RESTful y quieres crear rápidamente una aplicación CRUD, llena de funcionalidades y recursos, y además soportas POO puede que quieras usar esta clase basada en Recursos.

Todo lo que tenemos que hacer es crear una clase que herede de ResourceModel.

from app.core.resource_model import ResourceModel
from app.common.http.response import response
from app.common.http.status import HTTPStatus
...

class ViewLocales(ResourceModel):
    async def get(self, request: Request, item_id: Optional[str] = None):
        return response(200, HTTPStatus.SUCCESS)

    async def post(self, request: Request, body: LocalesCreateDto):
        return response(201, HTTPStatus.CREATED)

    async def put(self, request: Request, item_id: str, body: LocalesUpdateDto):
        return response(200, HTTPStatus.UPDATED)

    async def delete(self, request: Request, item_id: str):
        return response(200, HTTPStatus.SUCCESS)

Importante

Cuando el BackEnd inicie, intentará ubicar un archivo llamado urls.py en la carpeta app/modules/ y el nombre del módulo que estás creando, ejemplo:

1
2
3
4
5
6
/app
├── modules
│   ├── locales
│   │   ├── __init__.py
│   │   ├── urls.py
│   ├── __init__.py

CRUD usando Recursos (Class Resource)

Callisto proporciona un generador que automágicamente crea todo el código boilerplate para ayudarnos a evitar hacer todo esto de forma manual (y puede que propenso a errores), y hacer la experiencia del desarrollador mucho más simple.

  • ejecutamos el comando crud, utilizando Poetry... 🥁
$ poetry exec crud
  • definir el nombre del módulo

    CRUD modules for Callisto 🦄
    ? Escribe un nombre para el módulo: locales
    

  • definir el tipo de router a utilizar: Restful (resources)

    1
    2
    3
    4
    ? Selecciona el tipo de módulo: (Use arrow keys)
     » Restful (resources)
       JSON Over Post (api_router)
       Ninguno (Salir)
    

  • definir el tipo de ORM

    1
    2
    3
    4
    ? Deseas utilizar un ORM? (Use arrow keys)
     » MongoDB
       Firestore
       Ninguno (sin ORM)
    

  • listo!

    ? Listo? (y/N) Y
    

Lectura recomendada