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
POSTyPUTpueden 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.controllerno 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