Saltar a contenido

Recursos (Class Resource)

no recomendado

Class Resource fue eliminada de esta versión. Ese fragmento de código se mantiene solo como ejemplo.

No se recomienda seguir este apartado, para esta versión de Callisto.

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