Rotas usando classes e post com json

<< Click to Display Table of Contents >>

Navigation:  .NET 6 > WebApplication >

Rotas usando classes e post com json

Previous pageReturn to chapter overviewNext page

Crie um novo projeto "ASP.NET Core Empty"

 

Program.cs

 

var builder = WebApplication.CreateBuilder(args);

var app = builder.Build();

 

app.Use(async (context, next) =>

{

  await next(context);

 

   // entra na 404 tambem quando mostra/nome/idade = idade não inteira

  if (context.Response.StatusCode == 404)

   {

      await context.Response.WriteAsync("404-Pagina nao localizada");

   }

 

  // quando não passa o nome e senha no json para o GetToken

  if (context.Response.StatusCode == 400)

   {

      await context.Response.WriteAsync("400-Faltam informações");

   }

});

 

if (app.Environment.IsDevelopment())

{

   app.UseDeveloperExceptionPage();

}

 

app.MapPost("/token", MinhaClasse.GetToken);

app.MapGet("/mostrar/{nome}/{idade:int}", MinhaClasse.MostrarNomeIdade);

 

app.Run();

 

Usuario.cs

 

using System.ComponentModel.DataAnnotations;

using System.Text.Json;

 

public class Usuario

{

  public int Id { get; set; }

   [Required]

  public string Nome { get; set; }

   [Required]

  public string Senha { get; set; }

  public string Email { get; set; }

 

  public Usuario()

   {

      this.Id = 0;

      this.Nome = string.Empty;

      this.Senha = string.Empty;

      this.Email = string.Empty;

   }

 

  public string ToJson()

   {

      return JsonSerializer.Serialize(this);

   }

}

 

MinhaClasse.cs

 

public static class MinhaClasse

{

  public static async Task GetToken(HttpContext context)

   {

      var usuario = await context.Request.ReadFromJsonAsync<Usuario>() ?? new Usuario();

      if (!string.IsNullOrEmpty(usuario.Nome) && !string.IsNullOrEmpty(usuario.Senha))

       {

          if (usuario.Senha != "123")

           {

               context.Response.StatusCode = 401;

              await context.Response.WriteAsync("senha incorreta");

           }

          else

           {

               usuario.Email = "junior@market.com.br";

               usuario.Id = 10;

 

              await context.Response.WriteAsync(usuario.ToJson());

           }

       }

 

       context.Response.StatusCode = 400;

   }

 

  public static async Task MostrarNomeIdade(HttpContext context)

   {

      await context.Response.WriteAsync($"Nome: {context.GetRouteValue("nome")} idade: {context.GetRouteValue("idade")}");

   }

}