Publicación de una API web de ASP.NET Core en Azure API Management con Visual Studio

Por Matt Soucoup

En este tutorial aprenderá a crear un proyecto de API web de ASP.NET Core mediante Visual Studio, se asegurará de que tiene compatibilidad con OpenAPI y, luego, publicará la API web en Azure App Service y Azure API Management.

Configurar

Para realizar el tutorial, necesitará una cuenta de Azure.

Creación de una API web de ASP.NET Core

Visual Studio permite crear fácilmente un nuevo proyecto de API web de ASP.NET Core a partir de una plantilla. Siga estas instrucciones para crear un nuevo proyecto de API web de ASP.NET Core:

  • En el menú Archivo, seleccione Nuevo>Proyecto.
  • Escriba API web en el cuadro de búsqueda.
  • Seleccione la plantilla API web de ASP.NET Core y seleccione Siguiente.
  • En el cuadro de diálogo Configurar el nuevo proyecto, asigne al proyecto el nombre WeatherAPI y seleccione Siguiente.
  • En el cuadro de diálogo Información adicional:
  • Confirme que el Marco es .NET 6.0 (Compatibilidad a largo plazo).
  • Confirme que la casilla Usar controladores (desactivar para usar API mínimas) está activada.
  • Confirme que la casilla Habilitar compatibilidad con OpenAPI está activada.
  • Seleccione Crear.

Exploración del código

Las definiciones de Swagger permiten que Azure API Management lea las definiciones de API de la aplicación. Al activar la casilla Habilitar compatibilidad con OpenAPI durante la creación de la aplicación, Visual Studio agrega automáticamente el código para crear las definiciones de Swagger. Abra el archivo Program.cs. Se muestra el código siguiente:


...

builder.Services.AddSwaggerGen();

...

if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI(); // Protected by if (env.IsDevelopment())
}

...

Asegurarse de que las definiciones de Swagger siempre se generan

Azure API Management necesita que las definiciones de Swagger estén siempre presentes, independientemente del entorno de la aplicación. Para asegurarse de que siempre se generan, mueva app.UseSwagger(); fuera del bloque if (app.Environment.IsDevelopment()).

El código actualizado:


...

app.UseSwagger();

if (app.Environment.IsDevelopment())
{
    app.UseSwaggerUI();
}

...

Cambio del enrutamiento de la API

Cambie la estructura de la dirección URL necesaria para acceder a la acción Get de WeatherForecastController. Siga los pasos siguientes:

  1. Abra el archivo WeatherForecastController.cs.

  2. Reemplace el atributo de nivel de clase [Route("[controller]")] por [Route("/")]. La definición de clase actualizada:

    [ApiController]
    [Route("/")]
    public class WeatherForecastController : ControllerBase
    

Publicación de la API web en Azure App Service

Complete los pasos siguientes para publicar la API web de ASP.NET Core en Azure API Management:

  1. Publique la aplicación de API en Azure App Service.
  2. Publique la aplicación de API web de ASP.NET Core en la instancia de servicio de Azure API Management.

Publicación de la aplicación de API en Azure App Service

Complete los pasos siguientes para publicar la API web de ASP.NET Core en Azure API Management:

  1. En el Explorador de soluciones, haga clic con el botón derecho en el proyecto y seleccione Publicar.

  2. En el cuadro de diálogo Publicar, seleccione Azure y el botón Siguiente.

  3. Seleccione Azure App Service (Windows) y el botón Siguiente.

  4. Seleccione Create a new Azure App Service (Crear una instancia de Azure App Service).

    Se muestra el cuadro de diálogo Create App Service (Crear una instancia de App Service). Se rellenan los campos de entrada Nombre de la aplicación, Grupo de recursos y Plan de App Service. Puede mantener estos nombres o cambiarlos.

  5. Seleccione el botón Crear.

  6. Una vez creado el servicio de aplicaciones, seleccione el botón Siguiente.

  7. Seleccione Crear un servicio API Management.

    Aparece el cuadro de diálogo Crear servicio API Management. Puede dejar los campos de entrada Nombre de API, Nombre de suscripción y Grupo de recursos tal y como están. Seleccione el botón nuevo situado junto a la entrada Servicio API Management y rellene los campos necesarios de ese cuadro de diálogo.

    Seleccione el botón Aceptar para crear el servicio API Management.

  8. Seleccione el botón Crear para continuar con la creación del servicio API Management. Este paso puede tardar varios minutos en completarse.

  9. Cuando finalice, seleccione el botón Finalizar.

  10. El cuadro de diálogo se cierra y aparece una pantalla de resumen con información sobre la publicación. Seleccione el botón Publicar.

    La API web se publicará tanto en Azure App Service como en Azure API Management. Aparecerá una nueva ventana del explorador y mostrará la API en ejecución en Azure App Service. Puede cerrar esa ventana.

  11. Abra Azure Portal en un explorador web y vaya a la instancia de API Management que ha creado.

  12. Seleccione la opción API en el menú izquierdo.

  13. Seleccione la API que se ha creado en los pasos anteriores. Ahora está rellenada y puede explorarla.

Configuración del nombre de la API publicada

Observe que el nombre de la API es WeatherAPI; sin embargo, nos gustaría llamarla Previsiones meteorológicas. Complete los pasos siguientes para actualizar el nombre:

  1. Agregue lo siguiente a Program.cs inmediatamente después de servies.AddSwaggerGen();.

    builder.Services.ConfigureSwaggerGen(setup =>
    {
        setup.SwaggerDoc("v1", new Microsoft.OpenApi.Models.OpenApiInfo
        {
            Title = "Weather Forecasts",
            Version = "v1"
        });
    });
    
  2. Vuelva a publicar la API web de ASP.NET Core y abra la instancia de Azure API Management en Azure Portal.

  3. Actualice la página en el explorador. Verá que el nombre de la API ahora es correcto.

Comprobación del funcionamiento de la API web

Puede probar la API web de ASP.NET Core implementada en Azure API Management desde Azure Portal con los pasos siguientes:

  1. Abra la pestaña Prueba.
  2. Seleccione / o la operación Get.
  3. Seleccione Enviar.

Limpieza

Cuando haya terminado de probar la aplicación, vaya a Azure Portal y elimínela.

  1. Seleccione Grupos de recursos y, luego, el grupo de recursos que haya creado.

  2. En la página Grupos de recursos, seleccione Eliminar.

  3. Escriba el nombre del grupo de recursos y seleccione Eliminar. La aplicación y todos los demás recursos que ha creado en este tutorial se han eliminado de Azure.

Recursos adicionales