Hoy en día, una API es algo básico en nuestros proyectos como desarrolladores. Dicha API la podremos consumir desde lenguajes cliente como Angular, React, etc… , como en servidor, como en .NET .

A continuación, os voy a enseñar como se crean estos proyectos y como se consumen.

Para empezar, debemos elegir este proyecto a la hora de realizarlo.

ASP.NET Core Web API

Una vez creado, veremos que trae una carpeta Controllers y nada más reseñable. Empezaremos añadiendo los Nugget para nuestro proyecto, que serán estos :

NOTA : PONER LA VERSIÓN QUE TENGAMOS NUESTRO PROYECTO, SI ES LA 5, LA 5. SI ESTAMOS EN LA 6, PUES LA 6.

A continuación, vamos a crear nuestras carpetas Models, Data y Repositories.

Sobre Models, nos vamos a crear nuestra clase, la cual irá conectada a la BBDD para traer los objetos mediante LINQ. En mi caso, serán Películas, por lo que me creo la clase Película con las siguientes propiedades:

Una vez tengamos nuestra clase, dentro de Data nos creamos nuestro Context, donde haremos una colección DbSet por clase que queramos.

Ahora, sobre Repositories vamos a crearnos nuestro repositorio donde tendremos nuestros métodos para recuperar datos, ejecutar acciones, sobre nuestros objetos que obtendremos de la BBDD. En mi caso, para este ejemplo, haré algo simple, como sacar una lista de objetos, encontrar un objeto por su identificador, modificar un objeto, añadir un objeto y eliminar un objeto. Lo que viene siendo el típico CRUD, claro está.

Inyectamos nuestro Context y nos creamos los métodos :

    public class RepositoryPeliculas
    {
    private PeliculasContext context;    

    public RepositoryPeliculas(PeliculasContext context)
    {
        this.context = context;
    }

    public List<Pelicula> GetPeliculas()
    {
        return this.context.Peliculas.ToList();
    }

    public Pelicula GetPeliculaDetails(int idpelicula)
    {
        return this.GetPeliculas().FirstOrDefault(z => z.IdPelicula ==      idpelicula);
    }

    public int GetMaxIdPeli()
    {
        var max = (from datos in this.context.Peliculas
                   select datos.IdPelicula).Max();

        return max + 1;
    }

    public void InsertarPelicula(string Titulo, int Duracion, string Sinopsis, string Genero, string Trailer, string Imagen, int Valoracion)
    {
        Pelicula peli = new Pelicula();
        peli.IdPelicula = this.GetMaxIdPeli();
        peli.Titulo = Titulo;
        peli.Duracion = Duracion;
        peli.Sinopsis = Sinopsis;
        peli.Genero = Genero;
        peli.Trailer = Trailer;
        peli.Imagen = Imagen;
        peli.Valoracion = Valoracion;

        this.context.Peliculas.Add(peli);
        this.context.SaveChanges();
    }

    public void ModificarPelicula(int IdPelicula, string Titulo, int Duracion, string Sinopsis, string Genero, string Trailer, string Imagen, int Valoracion)
    {
        Pelicula peli = this.GetPeliculaDetails(IdPelicula);
        peli.Titulo = Titulo;
        peli.Duracion = Duracion;
        peli.Sinopsis = Sinopsis;
        peli.Genero = Genero;
        peli.Trailer = Trailer;
        peli.Imagen = Imagen;
        peli.Valoracion = Valoracion;

        this.context.SaveChanges();
    }

    public void DeletePelicula(int idpelicula)
    {
        Pelicula peli = this.GetPeliculaDetails(idpelicula);
        this.context.Peliculas.Remove(peli);
        this.context.SaveChanges();
    }
}

Una vez tenemos hecho el repositorio, vamos a poner en appsettings nuestra cadena de conexión a la BBDD

Por seguridad, he quitado los datos de la cadena. Poned bien los vuestros

Una vez tenemos esto, en nuestro Startup, añadimos la cadena y ponemos nuestro repositorio y context a jugar, a la vez que habilitamos el Swagger tanto como en desarrollo como en release.

ConfigureServices
Habilitación de Swagger, y le añadimos el RoutePrefix

Solo nos queda un último paso hasta crearnos nuestros métodos para la API, que es irnos a la carpeta Properties, y sobre launchSettings, borramos o comentamos las líneas de Swagger.

En mi caso, las comento.

Pues ya sobre Controllers podemos crearnos nuestro Controller (en mi caso será PeliculasController) y debe de ser de tipo API

Podemos crearnos cuatro tipo de métodos, HttpGet, HttpPost, HttpPut, HttpDelete.

Por defecto, sólo podremos tener uno o dos métodos GET (con id), pero si ponemos [Route(«[action]/{valor}»)], podremos tener tantos GET como queramos, porque cogerá el nombre del controller y el del método (esto también se aplica al PUT, POST, DELETE).

Inyectamos nuestro repositorio y creamos el método GET de una lista de películas y el GET de encontrar una película por ID.

Es FUNDAMENTAL que cuando queramos pasarle datos por parámetro, el valor que ponemos dentro de las llaves (en mi caso id), tenga el MISMO NOMBRE que el parámetro que recibe el método.

[HttpGet(«{id}»)]
public ActionResult FindPelicula(int id){…}

Para los método POST y PUT, debemos señalar que va a recibir un objeto como parámetro del método.

Al no devolver nada, y una API debe devolver una respuesta, hacemos que devuelva un Ok.

Para el Delete, siguiendo la norma de los parámetros con el mismo nombre, hacemos exactamente lo mismo, y devolvemos un Ok.

Pues bien, ya tenemos nuestra API creada. Podemos ir probándola que todo va funcionado con nuestro Localhost, y, una vez tengamos todo funcional, la subimos a nuestra cuenta de Azure para poder atacarla desde todo tipo de lenguajes.

API con sus métodos alojada en Azure

Para poder consumirla, debemos permitir el CORS. Nos vamos a la APP Service, en la lista de la izquierda buscamos CORS y seleccionamos esta opción:

Añadimos un asterisco

No voy a crear ninguna APP en Angular ni React, asique me apoyaré de un programa llamado Insomnia, que consume nuestra API alojada en Azure, y vais a ver que ya tenemos nuestra API funcional y que la atacamos desde AZURE.

MÉTODO GET

GET

MÉTODO GET CON PARÁMETRO

CON PARÁMETRO

MÉTODO POST

Para el PUT y el POST debemos enviarle el objeto como JSON

POST
Demostración de que se ha subido al buscarlo por su ID

MÉTODO PUT

PUT por su ID
Prueba de que se ha modificado

MÉTODO DELETE

Le enviamos el ID y lo borramos
Se ha borrado el objeto

Y ya estaría. ¡Espero que os haya aclarado las dudas y podáis realizar vuestras API’s!

Github

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.