Esqueleto MVC para tu azure function en .net
¿Cómo configurar una Azure function siguiendo la arquitectura MVC?
El esquema MVC (Model View Controller)
Por ir al punto. Una arquitectura MVC sigue el patrón mediador. Como ya sabemos las arquitecturas son agnosticas al lenguaje de programación.
Luego esta las puedes implementar en Python, Js, PHP, etc.
En este caso organizo una Azure Function con un módulo Users.
La aplicación es una API que consta de dos endpoints. Uno es un listado y/o busqueda de usuarios y otro de "creación".
La función usa una api pública como origen de datos. (dummyjson.com). Esta representada en su respectivo repositorio.
Para la creación emulo un proceso de escritura. La intención era tener al menos un método de lectura y otro de escritura.
Siendo puristas el ejemplo de esta Azure Fn no tiene una vista típica que cuente con un gestor de plantillas y renderizado.
En este caso es más simple puesto que la salida debe ser un objeto json.
La presentación de la información se realiza mediante un DTO (Data Transfer Object).
que es el dato final que se presentará al usuario.
Customización de los endpoints
Cabe destacar que en esta implementación también se aborda la customización de endpoints mapeados al controlador. Parece algo trivial pero cuando empiezas a tocar las azure functions no es tan inmediato. Al menos para mí no lo fué.
Ejemplo mapeo custom endpoint con controlador
public sealed class GetUsersController
{
private readonly GetUsersService _getUsersService;
public GetUsersController(
GetUsersService getUsersService
)
{
_getUsersService = getUsersService;
}
/*
Este es el endpoint que apuntará a este Controlador.Método
users-search: [GET] http://localhost:7071/api/users-search
*/
[FunctionName("users-search")]
public async Task Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = null)] HttpRequest req,
ILogger log
)
{
...
}
}
Ejemplo usando Postman
Listar usuarios: http://localhost:7071/api/users-search
Crear usuario: http://localhost:7071/api/user-create
{
"fullName":"Eduardo A.F",
"email":"eaf@eduardoaf.com"
}
Llamadas curl
#listado usuarios
curl -X GET http://localhost:7071/api/users-search?search=eduardoaf.com
#creación de usuario
curl -X POST -H "Content-Type: application/json" -d '{"fullName":"Eduardo A. F.", "email": "eaf@eaf.com"}' http://localhost:7071/api/user-create
El código fuente completo lo dejo en mi Github azurefn_mvc
Autor: Eduardo A. F.
Publicado: 28-10-2023 20:17