ASP.NET Core - Consumindo uma Minimal API - II


 Hoje veremos um exemplo básico de como consumir uma minimal API em uma aplicação ASP .NET Core MVC.

Continuando o artigo anterior vamos criar agora a aplicação ASP .NET Core MVC para consumir a nossa API.


Criando a aplicação MVC

A vamos incluir um projeto MVC na solução usando o template ASP.NET Core Web App(Model-View-Controller) com o nome DicasApp.Mvc.

Vamos aproveitar o controlador HomeController criado na pasta Controllers limpando todo o código gerado e incluindo o código abaixo:

using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json.Linq;

namespace DicasApp.Mvc.Controllers;

public class HomeController : Controller
{
    public async Task<IActionResult> Index()
    {
        using (var client = new HttpClient())
        {
            var request = new HttpRequestMessage();
            request.RequestUri = new Uri("https://localhost:7217/pensamentos");
            var response = await client.SendAsync(request);
            var pensamento = await response.Content.ReadAsStringAsync();

            var detalhes = JObject.Parse(pensamento);
            ViewData["Pensamento"] = detalhes["nome"] + ";;" + detalhes["texto"] + ";;" + detalhes["categoria"];
            return View();
        }
    }
}

No método Action Index do controlador HomeController definimos uma instância de HttpClient e montamos um request para acessar o endpoint na URI "https://localhost:7217/pensamentos".

A seguir obtemos o retorno como uma string e fazemos o parse para um objeto JSON onde extraímos as informações e armazenamos em um ViewData["Pensamento"].

A seguir retornamos para View Index.cshtml criada na pasta /Views/Home :

@{
    ViewData["Title"] = "Home page";
}
<div class="card" style="width: 18rem;">
  <img class="card-img-top" src="~/images/pensamento.jpg" alt="Card image">
  <div class="card-body">
    <p></p>
    <h6 class="card-subtitle mb-2 text-muted">@ViewData["Pensamento"].ToString().Split(";;")[1]</h6>
    <p class="card-text">@ViewData["Pensamento"].ToString().Split(";;")[0]</p>
    <a class="" asp-area="" asp-controller="Home" asp-action="Index">Pensamento</a>
  </div>
</div>

 

Neste código estamos usando um Card do Bootstrap para exibir uma imagem obtida a partir da pasta wwwroot/images do projeto e estamos exibindo as informações da ViewData onde usando o método Split() obtemos cada parte da mensagem.

Antes de executar o projeto devemos configurar na Solução a opção para - Multiple startup projects -, e marcar em Action a opção Start para ambos os projetos:

Executando a solução teremos o resultado abaixo:

Pegue o projeto completo aqui: DicasApp.zip (sem as referências)

"E não vos embriagueis com vinho, em que há contenda, mas enchei-vos do Espírito;
Falando entre vós em salmos, e hinos, e cânticos espirituais; cantando e salmodiando ao Senhor no vosso coração;"
Efésios 5:18,19

Referências:


José Carlos Macoratti