Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Bug] Erro com versão do swagger

durante a aula sobre como adicionar o swagger fui seguindo os passos e quando executei o código dessa forma:

using Microsoft.AspNetCore.Mvc;
using ScreenSound.API.Endpoints;
using ScreenSound.Banco;
using ScreenSound.Modelos;
using System.Data.SqlTypes;
using System.Text.Json.Serialization;

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddDbContext<ScreenSoundContext>();
builder.Services.AddTransient<DAL<Artista>>();
builder.Services.AddTransient<DAL<Musica>>();

builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

builder.Services.Configure<Microsoft.AspNetCore.Http.Json.JsonOptions>(options => options.SerializerOptions.ReferenceHandler = ReferenceHandler.IgnoreCycles);

var app = builder.Build();

app.AddEndPointsArtistas();
app.AddEndPointsMusicas();

app.UseSwagger();
app.UseSwaggerUI();

app.Run();

O seguinte erro apareceu na aba aberta:

Parser error on line 13 end of the stream or a document separator is expected

Unable to render this definition The provided definition does not specify a valid version field.

Please indicate a valid Swagger or OpenAPI version field. Supported version fields are swagger: "2.0" and those that match openapi: 3.0.n (for example, openapi: 3.0.0).

1 resposta
solução!

Olá, Rafael.

Tudo bem?

Pelo que você descreveu, parece que o problema está relacionado à configuração do Swagger na sua aplicação ASP.NET Core. O erro indica que falta uma especificação de versão válida para o Swagger ou OpenAPI no seu projeto.

Para resolver isso, você precisa garantir que o Swagger esteja configurado corretamente para usar uma versão específica do OpenAPI. Normalmente, isso é feito no método AddSwaggerGen() em seu arquivo de configuração. Aqui está um exemplo de como você pode configurar isso:

builder.Services.AddSwaggerGen(c =>
{
    c.SwaggerDoc("v1", new Microsoft.OpenApi.Models.OpenApiInfo 
    { 
        Title = "ScreenSound API", 
        Version = "v1",
        Description = "Uma API para gerenciamento de artistas e músicas",
        Contact = new Microsoft.OpenApi.Models.OpenApiContact
        {
            Name = "ScreenSound Support",
            Email = "support@screensound.com",
            Url = new Uri("https://screensound.com/support")
        }
    });
});

Neste exemplo, SwaggerDoc define um documento para a versão 1 da API ("v1"), e você pode ajustar os detalhes como Title, Version, Description, etc., conforme necessário para sua aplicação.

Certifique-se também de que todas as dependências necessárias para o Swagger estejam instaladas corretamente através do NuGet, como Swashbuckle.AspNetCore.

Depois de fazer essas alterações, tente executar sua aplicação novamente e acessar o Swagger UI para ver se o problema foi resolvido.

Espero ter ajudado. Qualquer dúvida manda aqui. Bons estudos.