Intro : Net Core 6 Api French Version

Intro : Net Core 6 Api French Version

Introduction

Bienvenue sur mon premier blog où j'écris en français. Dans ce blog, je vais expliquer comment utiliser et créer une API REST avec .NET Core dans sa version 6.0. Dans mon équipe, nous utilisons la version 6.0.302. Dans ce tutoriel, nous allons créer une API qui nous permettra, à l'aide d'une classe "animal", de créer une base de données. Vous pourrez également consulter, créer, modifier et supprimer des enregistrements de cette table. Si vous avez des connaissances de base sur ce qu'est une API et comment elle fonctionne, vous pouvez passer à la partie suivante, "Créer le projet".

Qu'est-ce qu'une API

API signifie en anglais "Application Programming Interface" (Interface de Programmation d'Application). En bref, une API est une application qui reçoit une requête et renvoie une réponse. Cela permet de connecter l'interface utilisateur et le serveur, tout en offrant la possibilité de réutiliser le même service pour différents appareils. Autrement dit, nous pouvons créer une seule application qui sera utilisée par des ordinateurs, des téléphones portables, des téléviseurs, etc.

Créer le project

Je vais utiliser Visual Studio Code (VSCode) et Visual Studio (VS Studio) également, donc tu peux voir comment cela fonctionne dans les deux.

VS Code

Code_4qvbx7KDUO.png

dotnet new webapi -o AnimalsCodeApi

VS Studio

devenv_BUjIk7UZei.png

devenv_7vy9J7sFe4.png

image.png


Voici le projet que vous auriez

Code_NiB7nHIrtD.png

Et nous pouvons commencer l'application dans VS Code avec la commande.

dotnet run

Code_7AdnTbCXzq.png

Et ici dans VS Studio.

devenv_VWO2nD1nwH.png

Nous allons vers le lien.

https://localhost:7221/swagger/index.html

opera_SvFIJOp5eW.png

Swagger nous permet de tester les API que nous créons, il est similaire à Postman.

Configurer le projet

La première étape sera de supprimer les fichiers WeatherForecast.cs et /Controllers/WeatherForecastController.cs.

image.png

image.png

Nous devons donc maintenant créer notre structure avec les nouveaux fichiers dans Startup.cs.

Code_7D8pE7Q9na.png

Startup.cs

namespace AnimalsCodeApi;

    public class Startup
    {
        public Startup(IConfiguration configuration){
            Configuration = configuration;
        }

        public IConfiguration Configuration {get ;}

        public void ConfigureServices(IServiceCollection services){
            services.AddControllers();
            services.AddEndpointsApiExplorer();
            services.AddSwaggerGen();

        }

        public void Configure(IApplicationBuilder app, IWebHostEnvironment env){
            if (env.IsDevelopment())
            {
                app.UseSwagger();
                app.UseSwaggerUI();
            }

            app.UseHttpsRedirection();

            app.UseRouting();

            app.UseAuthorization();

            app.UseEndpoints( endpoints =>{
                endpoints.MapControllers();
            });
        }
    }

Program.cs

using AnimalsCodeApi;

var builder = WebApplication.CreateBuilder(args);

var startup = new Startup(builder.Configuration);

startup.ConfigureServices(builder.Services);

var app = builder.Build();

startup.Configure(app, app.Environment);
app.Run();

De cette façon, nous aurons l'application d'une manière mieux organisée

Install Packages

VS Code

dotnet add package Microsoft.EntityFrameworkCore.Tools
dotnet add package Microsoft.EntityFrameworkCore.Design
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
dotnet tool install --global dotnet-ef

VS Studio

Os7PgFxU9j.png

devenv_HeIX7hAPHN.png

5PEa379rCX.png

devenv_TPPAX7mlvK.png

ORM

Pour créer chaque table, nous allons créer sa classe et son contrôleur

Entities

Nous allons creer un nouveau dossier, et à l'intérieur toutes les classes qui représentent des tables dans notre programme.

Code_M9Rofb7z3B.png

Entities/Animal.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.ComponentModel.DataAnnotations;

namespace AnimalsCodeApi.Entities
{
    public class Animal
    {
        [Key]
        public int Id { get; set; }
        public string tipo { get; set; }
        public string nombre { get; set; }


    }
}

Controller

Cotrollers/AnimalsController.cs

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using Microsoft.EntityFrameworkCore;
using AnimalsCodeApi.Entities;

namespace AnimalsCodeApi.Controllers
{
    [ApiController]
    [Route("[controller]")]
    public class AnimalsController : ControllerBase
    {
        //http petitions
    }
}

ApplicationDBContext

En ce fichier tu dois créer un DbSet pour chaque "Entity" qui existe.

/ApplicationDBContext.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;

namespace AnimalsCodeApi
{
    public class ApplicationDBContext : DbContext
    {
        public ApplicationDBContext(DbContextOptions options) : base(options)
        {

        }
        public DbSet <Animal> animals { get; set; }
    }
}

/appsettings.Development.json

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "ConnectionStrings": {  
    "defaultConnection" : "Data Source=(localdb)\\mssqllocaldb;Initial Catalog=ApiCodeAnimals; Integrated Security=True"

  }
}

/Startup.cs

using Microsoft.EntityFrameworkCore;
.
.
.
.
public void ConfigureServices(IServiceCollection services){
            services.AddControllers();
            services.AddEndpointsApiExplorer();
            services.AddSwaggerGen();
            services.AddDbContext<ApplicationDbContext>(options 
                => options.UseSqlServer(Configuration.GetConnectionString("defaultConnection")));
        }

Migrations

VS Code

dotnet ef migrations add Animals
dotnet ef database update

VS Studio

Ouvre packet manager console

Add-Migration Animal
Update-Database

devenv_iCryu0drdF.png

Build API

/Controllers/AnimalsController.cs

using System;
using System.Web;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using Microsoft.EntityFrameworkCore;
using AnimalsStudioApi.Entities;

namespace AnimalsStudioApi.Controllers
{
    [ApiController]
    [Route("[controller]")]
    public class AnimalsController : ControllerBase
    {
        private readonly ApplicationDBContext context;

        public AnimalsController(ApplicationDBContext context)
        {
            this.context = context;
        }

        [HttpGet]
        public async Task<ActionResult<List<Animal>>> Get()
        {
            return await context.animals.ToListAsync();
        }

        [HttpPost]
        public async Task<ActionResult> Post(Animal animal)
        {
            context.Add(animal);
            await context.SaveChangesAsync();
            return Ok();
        }

        [HttpPut]
        public async Task<ActionResult> Put(Animal animal)
        {
            context.Update(animal);
            await context.SaveChangesAsync();
            return Ok();
        }

        [HttpDelete("{id:int}")]
        public async Task<ActionResult> Delete(int id)
        {
            context.Remove(new Animal() { Id = id });
            await context.SaveChangesAsync();
            return Ok();
        }

    }
}

Nous pouvons maintenant tester les fonctionnalités "interroger, créer, modifier, supprimer" dans swagger.

opera_MLMtVxgqwT.png