-
Notifications
You must be signed in to change notification settings - Fork 9
Étape 4 WebApi
Dans le projet, ajoutez une nouvelle classe appelée RecipesController
, insérez-ci le code suivant :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Mic.CookBook.Web.Database;
using Mic.CookBook.Web.Models;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
namespace Mic.CookBook.Web.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class RecipesController : ControllerBase
{
private readonly CookBookContext cookBookContext;
public RecipesController(CookBookContext cookBookContext)
{
this.cookBookContext = cookBookContext;
}
[HttpGet]
public ActionResult<IEnumerable<Recipe>> Get()
{
var recipes = cookBookContext.Recipes.ToList();
if (recipes.Count == 0)
return NotFound();
return Ok(recipes);
}
[HttpGet("{id}")]
public ActionResult<Recipe> Get(int id)
{
var recipe = cookBookContext.Recipes.FirstOrDefault(r => r.Id == id);
if (recipe == null)
return NotFound();
return Ok(recipe);
}
}
}
Swagger est basé sur les principes de l'OpenApi.
Ajoutez le NuGet paquet NSwag.AspNetCore
et ajoutez dans le fichier startup.cs
les lignes suivantes :
// Section using
using NJsonSchema;
using NSwag.AspNetCore;
public void ConfigureServices(IServiceCollection services)
{
// ...
// Register the Swagger services
services.AddSwaggerDocument();
}
public void Configure(IApplicationBuilder app)
{
// Register the Swagger generator and the Swagger UI middlewares
app.UseSwagger();
app.UseSwaggerUi3();
}
Lancez l'application (F5
) et rendez-vous sur les pages :
http://localhost:44394/swagger
pour voir le Swagger UI.
http://localhost:44394/swagger/v1/swagger.json
pour voir le fichier de spécification Swagger.
Avez-vous remarqué que la documentation SwaggerUI ne présente pas les cas où nous renvoyons un 404 (not found). Nous pouvons décorer nos méthodes api afin de pouvoir ajouter des informations liées à cela :
[HttpGet]
[ProducesResponseType(200, Type = typeof(IEnumerable<Recipe>))]
[ProducesResponseType(404)]
public ActionResult<IEnumerable<Recipe>> Get()
{
...
}
[HttpGet("{id}")]
[ProducesResponseType(200, Type = typeof(Recipe))]
[ProducesResponseType(404)]
public ActionResult<Recipe> Get(int id) {
Lancez à nouveau le site, et rendez-vous sur la page de SwaggerUI. Observez la documentation. Précédent Suivant