« Swashbuckle » : différence entre les versions
Apparence
Aucun résumé des modifications |
|||
Ligne 4 : | Ligne 4 : | ||
* [https://docs.microsoft.com/en-us/aspnet/core/tutorials/getting-started-with-nswag?view=aspnetcore-2.1&tabs=visual-studio-code%2Cvisual-studio-xml Get started with NSwag and ASP.NET Core] | * [https://docs.microsoft.com/en-us/aspnet/core/tutorials/getting-started-with-nswag?view=aspnetcore-2.1&tabs=visual-studio-code%2Cvisual-studio-xml Get started with NSwag and ASP.NET Core] | ||
= | = [https://docs.microsoft.com/en-us/aspnet/core/tutorials/getting-started-with-nswag?view=aspnetcore-5.0&tabs=netcore-cli NSwag] = | ||
== Installation == | |||
<kode lang='powershell'> | <kode lang='powershell'> | ||
# pour vscode | # pour vscode | ||
dotnet add | dotnet add package NSwag.AspNetCore | ||
# | # Add to the project file *.csproj: | ||
# <ItemGroup> | # <ItemGroup> | ||
# <PackageReference Include="NSwag.AspNetCore" Version="11.17.15" /> | # <PackageReference Include="NSwag.AspNetCore" Version="11.17.15" /> | ||
</kode> | </kode> | ||
= [https://docs.microsoft.com/en-us/aspnet/core/tutorials/getting-started-with-nswag?tabs=netcore-cli#add-and-configure-swagger-middleware Configuration] = | == [https://docs.microsoft.com/en-us/aspnet/core/tutorials/getting-started-with-nswag?tabs=netcore-cli#add-and-configure-swagger-middleware Configuration] == | ||
== Configuration Web API == | === Configuration Web API === | ||
<filebox fn='Startup.cs'> | <filebox fn='Startup.cs'> | ||
public void ConfigureServices(IServiceCollection services) | public void ConfigureServices(IServiceCollection services) | ||
Ligne 28 : | Ligne 27 : | ||
</filebox> | </filebox> | ||
== Configuration MVC == | === Configuration MVC === | ||
<filebox fn='Startup.cs' collapsed> | <filebox fn='Startup.cs' collapsed> | ||
using NJsonSchema; | using NJsonSchema; | ||
Ligne 63 : | Ligne 62 : | ||
</filebox> | </filebox> | ||
= Problème avec IActionResult = | == Problème avec IActionResult == | ||
{{boxx|NSwag}} utilise la réflexion pour obtenir le type de retour. Avec {{boxx|IActionResult}} il ne peut pas. | {{boxx|NSwag}} utilise la réflexion pour obtenir le type de retour. Avec {{boxx|IActionResult}} il ne peut pas. | ||
<kode lang='csharp'> | <kode lang='csharp'> | ||
Ligne 73 : | Ligne 72 : | ||
[ProducesResponseType(typeof(IReadOnlyList<ItemDto>), StatusCodes.Status200OK)] | [ProducesResponseType(typeof(IReadOnlyList<ItemDto>), StatusCodes.Status200OK)] | ||
public IActionResult Get() | public IActionResult Get() | ||
</kode> | |||
= [https://docs.microsoft.com/en-us/aspnet/core/tutorials/getting-started-with-swashbuckle?view=aspnetcore-5.0&tabs=visual-studio-code Swashbuckle] = | |||
== Installation == | |||
<kode lang='bash'> | |||
dotnet add package Swashbuckle.AspNetCore | |||
</kode> | </kode> | ||
Version du 19 juin 2021 à 22:14
Liens
NSwag
Installation
# pour vscode
dotnet add package NSwag.AspNetCore
# Add to the project file *.csproj:
# <ItemGroup>
# <PackageReference Include="NSwag.AspNetCore" Version="11.17.15" />
|
Configuration
Configuration Web API
Startup.cs |
public void ConfigureServices(IServiceCollection services)
{
services.AddSwaggerDocument();
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseOpenApi();
app.UseSwaggerUi3();
|
Configuration MVC
Startup.cs |
using NJsonSchema;
using NSwag.AspNetCore;
using System.Reflection;
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseMvc();
// à ajouter avant app.UseSpa
app.UseSwaggerUi(typeof(Startup).GetTypeInfo().Assembly, settings =>
{
settings.GeneratorSettings.DefaultPropertyNameHandling = PropertyNameHandling.CamelCase;
settings.PostProcess = document =>
{
//document.Info.Version = "v1";
document.Info.Title = "Test API";
document.Info.Description = "A simple ASP.NET Core web API";
//document.Info.TermsOfService = "None";
document.Info.Contact = new NSwag.SwaggerContact
{
Name = "Nicolas",
//Email = string.Empty,
//Url = "https://twitter.com/spboyer"
};
/*document.Info.License = new NSwag.SwaggerLicense
{
Name = "Use under LICX",
Url = "https://example.com/license"
};*/
};
});
|
Problème avec IActionResult
NSwag utilise la réflexion pour obtenir le type de retour. Avec IActionResult il ne peut pas.
[HttpGet]
// utiliser SwaggerResponse
[SwaggerResponse(HttpStatusCode.OK, typeof(IReadOnlyList<ItemDto>))]
[SwaggerResponse(HttpStatusCode.BadRequest, typeof(void))]
// ou ProducesResponseType
[ProducesResponseType(typeof(IReadOnlyList<ItemDto>), StatusCodes.Status200OK)]
public IActionResult Get()
|
Swashbuckle
Installation
dotnet add package Swashbuckle.AspNetCore |
Test
- http://localhost:<port>/swagger
- http://localhost:<port>/swagger/v1/swagger.json
Dans un projet Web API avec Visual Studio Code, ouvrir le navigateur sur la page swagger.
.vscode\launch.json |
{
"configurations": [
{
"serverReadyAction": {
"action": "openExternally",
"pattern": "^\\s*Now listening on:\\s+(https?://\\S+)",
"uriFormat": "%s/swagger"
},
// autre solution
"launchBrowser": {
"enabled": true,
"args": "${auto-detect-url}",
"windows": {
"command": "cmd.exe",
"args": "/C start ${auto-detect-url}/swagger/index.html?url=/swagger/v1/swagger.json#!/Items"
}
}
|
Paramètres optionnels
Swagger ne gère pas les paramètres optionnels s'ils font partie du chemin, il les considère comme des paramètres required.