Como todos sabemos, es recomendable externalizar funciones de nuestros proyectos por lo que una Api es uno de los componentes mas importantes de cara a acceder a bases de datos. Por eso vamos a ver como crear e implementar nuestra Api en azure desde línea de comandos

Creación de la API

Lo primero que debemos hacer es crear un proyecto en Visual Studio de tipo ASP.NET Core Web Application y escogeremos la opción de API.

Una vez creado, instalaremos los nugget: Microsoft.EntityFrameworkCore, Microsoft.EntityFrameworkCore.SqlServer y Swashbuckle.AspNetCore.

Cuando estén instalados, haremos nuestro Crud con el context, el repositorio y el modelo de datos de lo que queremos mapear.

Tras esto, crearemos un controlador en el cual haremos los «accesos» a nuestros métodos. Para ello, utilizaremos las siguientes etiquetas:

  • [HttpGet]: Acceso a los registros de nuestra base de datos.
[HttpGet]
        public ActionResult<List<Ligas>> GetLigas()
        {
            return this.repo.GetLigas();
        }
  • [HttpPost]: Inserción de registros a nuestra base de datos
[HttpPost]
        public void NuevaLiga(Ligas lig)
        {
            this.repo.NuevaLiga(lig.Nombre, lig.Descripcion);
        }
  • [HttpPut]: Modificación de registros de nuestra base de datos
[HttpPut]
        public void ModificarLiga(Ligas lig)
        {
            this.repo.ModificarLiga(lig.IdLiga, lig.Nombre, lig.Descripcion);
        }
  • [HttpDelete]: Eliminación de registros de nuestra base de datos
[HttpDelete("{id}")]
        public void EliminarLiga(int id)
        {
            this.repo.EliminarLiga(id);
        }

Estos métodos solo pueden se pueden sobrescribir una vez y tiene que ser tal y como lo tenemos en el ejemplo de delete, pasándole entre paréntesis el dato que queremos pasar a la llamada de esta forma: ("{id}") , si quisiéramos pasar mas de un dato, lo haríamos de la siguiente manera: ("{id}/{"Nombre"}"). En el caso de que no reciba ningún parámetro en la etiqueta, le enviaremos el objeto entero en formato Json tal y como vemos en los ejemplos de Put y Post

Otro dato muy importante si utilizamos esto es que el nombre tiene que ser idéntico al que recibe nuestro método del controlador.

En el caso de que queramos hacer otro método sin sobrescribirlo, deberemos hacerlo utilizando Route como vemos en el siguiente ejemplo.

[HttpGet]
        [Route("[action]/{Nombre}")]
        public ActionResult<List<Ligas>> BuscarLigasNombre(String Nombre)
        {
            return this.repo.GetLigasNombre(Nombre);
        }

Route lo que hará será concatenar el nombre de nuestro método (action) con los datos que deseemos recibir.

Y por último, para que podamos ver la información de manera cómoda, utilizaremos Swagger el cual lo implementaremos en nuestro Startup escribiendo lo siguiente en el ConfigureServices.

services.AddSwaggerGen(options =>
            {
                options.SwaggerDoc(name: "v1", new OpenApiInfo
                {
                    Title = "Api Post",
                    Version = "v1",
                    Description = "Api Post Video"
                });
            });

También deberemos escribir los siguiente en el Configure:

app.UseSwagger();
            app.UseSwaggerUI(options =>
            {
                options.SwaggerEndpoint(
                url: "/swagger/v1/swagger.json", name: "Api v1");
                options.RoutePrefix = "";
            });

Una vez hecho todo esto y habiendo comprobado que funciona, deberemos subirlo a Git hub para poder subirlo a Azure desde la línea de comandos.

Implementación de nuestra Api en Azure

Lo primero que haremos será abrir Cloud Shell al cual podemos acceder desde aqui.

Lo primero que haremos será ir al Bash y e ir al directorio de trabajo con cd. Tras esto, clonaremos el repositorio

git clone "tuEnlaceDeGit"

Una vez clonado, iremos al apartado de Powershell y nos crearemos un usuario para hacer nuestra implementación con

az webapp deployment user set --user-name "user" --password "password"

Nuestro siguiente paso será crear el grupo de recursos donde almacenaremos nuestra Api

az group create --name myResourceGroup --location "NuestraLocalizacion"

Tras esto, crearemos el plan de nuestro App Service indicandole el nombre, el grupo de recursos donde vamos a almacenarlo y el plan de pago (sku), en este caso gratis

az appservice plan create --name myAppServicePlan --resource-group myResourceGroup --sku FREE

Cuando lo tengamos, crearemos nuestra aplicación indicando el grupo de recursos, el plan que utilizará y el nombre el cual solo puede contener caracteres alfanuméricos y -. Con la ultima parte, indicaremos que vamos a implementarlo desde git local.

az webapp create --resource-group myResourceGroup --plan myAppServicePlan --name "nombre" --deployment-local-git

Antes de avanzar al siguiente paso, debemos copiar el enlace que aparecerá en las primeras líneas exactamente cuando salga el campo «deploymentLocalGitUrl» cuando se ejecute la línea anterior.

Cuando acabemos, iremos a Bash otra vez y pondremos las siguientes líneas. Con estas líneas, añadiremos lo que tiene nuestro git local a Azure y lo subiremos a master

git remote add azure "enlaceCopiadoEnElPasoAnterior"
git push azure master

Cuando termine, será el momento de comprobar que todo funciona correctamente. Si en nuestra prueba nos sale el mensaje de error «No ‘Access-Control-Allow-Origin’ header is present on the requested resource», deberemos habilitar CORS. Eso lo podremos hacer desde la interfaz de Azure dentro de nuestra aplicación en el apartado de CORS o desde línea de comandos con lo siguiente.

az webapp cors add --resource-group myResourceGroup --name "Nombre de nuestraApp" --allowed-origins 'OrigenesQueQueremosQueConecten'

En el apartado de allowed-origins, pondremos los origenes que queremos que puedan acceder a nuestro servicio, en caso de que queramos que cualquiera pueda acceder en vez de poner una dirección pondremos un asterisco * para indicar que pueden acceder todos los origenes posibles.

Finalmente, he de decir que si no sois muy amigos de los comandos tenedlos a mano apuntados o intentad hacerlo desde el propio Visual Studio

Autor/a: Javier López Collado

Curso: Desarrollo Web Full Stack, MultiCloud y Multiplataforma

Centro: Tajamar

Año académico: 2020-2021

Código / recursos utilizados / Otros datos de interés:
https://github.com/JavierLopez98/ApiPost
https://docs.microsoft.com/es-es/azure/app-service/app-service-web-tutorial-rest-api

Leave a Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.