Esqueleto MVC para tu azure function en .net

¿Cómo configurar una Azure function siguiendo la arquitectura MVC?


El esquema MVC (Model View Controller)

Arquitectura 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.

Endpoints azure function users


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

Postman endpoint http://localhost:7071/api/users-search

Crear usuario: http://localhost:7071/api/user-create
{ "fullName":"Eduardo A.F", "email":"eaf@eduardoaf.com" } Postman endpoint http://localhost:7071/api/user-create

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