Controladores y acciones¶
Introducción¶
Los controladores en una aplicación web son responsables de manejar las solicitudes del usuario, procesar datos y devolver respuestas adecuadas. Son los intermediarios entre el modelo y la vista.
Las acciones son métodos dentro de un controlador que manejan solicitudes específicas, como mostrar una página, guardar datos o realizar operaciones particulares.
En resumen, los controladores organizan la lógica de la aplicación y las acciones ejecutan tareas específicas en respuesta a las solicitudes del usuario.
Uso¶
Python | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
-
Warning
Servicio simulado para el ejemplo.
Este API se puede consumir como:
Bash | |
---|---|
1 2 3 4 5 6 7 8 9 |
|
Esto es lo mínimo requerido para la creación de un API. Los datos llegarán a la acción create
del controlador UserController
por el método POST
y se almacenarán en el objeto data
, que es del tipo CreateUserRequestDto
. Finalmente, la respuesta será un objeto tipo CreateUserResponseDto
.
ModelResponse
será el encargado de devolver los datos de todos aquellos objetos (DTO) que hereden de BaseModel
.
NOTA: Es importante tipar el dato de entrada para que la asignación de los datos sea correcta.
NOTA: Para indicar a Cafeto que la aplicación debe usar las acciones de los controladores, se debe usar:
app.map_controllers()
.
De igual manera, se puede usar un objeto JSONResponse
tradicional de Starlette para la respuesta.
Python | |
---|---|
1 |
|
Para tener un mejor control, se recomienda usar los DTO siempre que se pueda. También es útil para ver la documentación y probar los APIs desde Swagger.
Los métodos disponibles son:
- @app.post (POST)
- @app.put (PUT)
- @app.patch (PATCH)
- @app.get (GET)
- @app.delete (DELETE)
- @app.options (OPTIONS)
Nota: Solo los métodos
POST
yPUT
pueden recibir datos como parámetro de entrada, aunque no es obligatorio.
Python | |
---|---|
1 2 3 4 5 6 7 8 9 10 |
|
-
Warning
Servicio simulado para el ejemplo.
Nota: Si el decorador
@app.controller
no tiene un parámetro, se usará el nombre de la clase sin la palabra "Controller".
Python | |
---|---|
1 2 3 4 5 6 7 8 9 10 |
|
-
Warning
Servicio simulado para el ejemplo.
En este caso, la URL será: http://127.0.0.1:8000/user/activate