Olá, Guilherme
O que acontece é que o ASP.NET Core, o framework que você está usando, possui um recurso chamado model binding. Este recurso é responsável por pegar os dados da requisição HTTP e automaticamente tentar converter (ou desserializar, no nosso caso) esses dados para o objeto do tipo que o método do controlador está esperando.
No seu caso, o método RecebeRestauranteDoRestauranteService(RestauranteReadDto dto)
do controlador está esperando um objeto do tipo RestauranteReadDto
. Quando uma requisição é feita a esse método, o ASP.NET Core pega o corpo da requisição (que é uma string JSON) e tenta converter essa string para um objeto RestauranteReadDto
. Se a conversão for bem-sucedida, o objeto é passado para o método do controlador. Se a conversão falhar, geralmente um erro 400 (Bad Request) é retornado.
Portanto, a desserialização é feita automaticamente pelo ASP.NET Core antes de chamar o método do controlador, e é por isso que você não precisa fazer a desserialização manualmente.
Aqui está um exemplo prático para ilustrar isso. Suponha que você tenha o seguinte JSON no corpo da requisição:
{
"Id": 1,
"Nome": "Restaurante A",
"Endereco": "Rua B, 123",
"Site": "www.restaurantea.com.br"
}
E o seguinte método no controlador:
[HttpPost]
public ActionResult RecebeRestauranteDoRestauranteService(RestauranteReadDto dto)
{
Console.WriteLine(dto.Id);
return Ok();
}
Quando a requisição é feita, o ASP.NET Core pega a string JSON do corpo da requisição e tenta converter para um objeto RestauranteReadDto
. O resultado é um objeto RestauranteReadDto
com os valores preenchidos de acordo com o JSON, e esse objeto é passado para o método do controlador.
Espero ter ajudado e bons estudos!