Facebook Pixel
Publicando Páginas HTML no Website REST API .NET Core

Publicando Páginas HTML no Website REST API .NET Core

Este artigo é parte da série:

Até o momento, temos as funções básicas da nossa API funcionando e bem documentadas. O Swagger está trazendo todas as informações relevantes para a utilização dos métodos, mas se tentarmos acessar o site raiz, sem o sufixo “/Swagger” encontraremos uma mensagem de erro. Isso porque nossa API não possui nenhuma página HTML para apresentação.

Muitas vezes, pode ser que queiramos expor alguma coisa no endereço raiz do site que está sendo publicado e, para isso temos que fazer algumas pequenas modificações:

No nível do projeto, adicione uma nova pasta com o nome “wwwroot” e observe que esta pasta já vai listar com o ícone de página web.

Nessa pasta “wwwroot” adicione um novo item “HTML Page” e, para seguir um padrão da indústria, utilize o nome “index.html”.

E vamos fazer um conteúdo HTML bem simples:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>Treino ASP.NET Core</title>
</head>
<body>
    <font face="verdana">
        <div align="center">
            <h1>Treino ASP.NET Core</h1>
            <h2>v1.0</h2>
        </div>
    </font>
</body>
</html>

Dependendo do ambiente onde será publicado o projeto, isso já seria o suficiente, mas não funciona, por exemplo no ambiente de testes. Para termos certeza que essa página sempre será chamada na raiz do site, é necessário inserir um trecho de código em “Program.cs”:

app.UseDefaultFiles(new DefaultFilesOptions
{
    DefaultFileNames = new
     List<string> { "index.html" }
}); 
app.UseStaticFiles();

Com isso, a versão final do nosso “Program.cs”, incluindo toda a customização para melhorar a aparência ficou assim:

using Microsoft.EntityFrameworkCore;
using Microsoft.OpenApi.Models;
using System.Reflection;
using Treino_REST_02.Models;

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddControllers();

// Swagger
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen(opts =>
{
    opts.SwaggerDoc("v1", new OpenApiInfo
    {
        Version = "v1",
        Title = "Treino REST API",
        Description = "Como desenvolver uma REST API utilizando C# e .NET Core",
        TermsOfService = new Uri("https://www.larsoft.com.br/autenticacao-em-2-fatores-2fa-nos-sistemas-larsoft/"),
        Contact = new OpenApiContact
        {
            Name = "Entre em contato com a Larsoft",
            Url = new Uri("https://www.larsoft.com.br/institucional/contato/")
        },
        License = new OpenApiLicense
        {
            Name = "Como a Larsoft trata a segurança de dados",
            Url = new Uri("https://www.larsoft.com.br/institucional/seguranca/")
        }
    });
    var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
    var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
    opts.IncludeXmlComments(xmlPath, true);
});

var app = builder.Build();
// Configure the HTTP request pipeline.
/*
if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}
*/
app.UseSwagger();
app.UseSwaggerUI();


app.UseHttpsRedirection();

app.UseAuthorization();

app.MapControllers();

app.UseDefaultFiles(new DefaultFilesOptions
{
    DefaultFileNames = new
     List<string> { "index.html" }
}); 
app.UseStaticFiles();

app.Run();

Agora, em qualquer ambiente que formos executar o website da nossa aplicação, teremos uma página HTML customizada.

Próxima etapa:

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *