ASP .NET Core MVC - Recebendo dados em diferentes formatos - VII
Neste artigo vamos iniciar a criação de uma WEB API usando a ASP .NET Core 3.0 para a seguir mostrar como consumir a API em uma aplicação ASP .NET Core MVC. |
Continuando a sexta parte do artigo veremos agora como receber dados em diferentes formatos.
A ASP .NET COre MVC sempre retornar dados no formato JSON para o cliente se os métodos Action tiverem o tipo de retorno diferente de string.
Podemos constatar isso executando o projeto ApiReservas e acessando a url: https://localhost:44311/api/reservas
Vemos aqui o retorno no formato JSON de todas as reservas.
Se você marcar os "Cabeçalhos de resposta", nas Ferramentas para desenvolvedores do FireFox, encontrará Content-Type como "application/json" conforme mostra a imagem a seguir:
Mas e se eu precisar obter os dados no formato XML, por exemplo ?
Para alterar a forma de obter os dados para XML precisamos adicionar o método AddXmlDataContractSerializerFormatters() na classe Startup no método ConfigureServices:
... public void ConfigureServices(IServiceCollection services) { services.AddScoped<IRepository,Repository>(); services.AddControllers().AddXmlDataContractSerializerFormatters(); } ... |
A seguir nos métodos Action GET do controlador ReservasController vamos incluir o atributo [Produces(“application/xml”)] para forçar o formato para XML.
[HttpGet] [Produces("application/xml")] public IEnumerable<Reserva> Get() => repository.Reservas;
[HttpGet("{id}")] |
Após essas alterações executando a aplicação novamente iremos obter o seguinte:
Agora estamos recebendo os dados no formato XML.
Recebendo dados em formatos distintos
Podemos também especificar que diferentes Actions tratem com formatos específicos usando o atributo [Consumes].
Vamos alterar o método POST do projeto criando dois métodos Action Post que tratam com formatos de dados diferentes.
[HttpPost] [Consumes("application/json")] public Reserva PostJson([FromBody] Reserva res) => repository.AddReserva(new Reserva { Nome = res.Nome, InicioLocacao = res.InicioLocacao, FimLocacao = res.FimLocacao });
[HttpPost]
|
A Actions
PostJson e PostXml aceitam solicitações POST, mas a
diferença entre elas é o formato de dados especificado com o atributo
Consumes.
O atributo Consumes examina o cabeçalho
Content-Type na solicitação HTTP dos clientes e decide se o método Action
pode processar a solicitação.
Quando houver uma solicitação cujo Content-Type estiver
definido como application/json, o método PostJson
será usado; já se o header do Content-Type for
application/xml, o método
PostXml será usado.
Com isso concluímos essa série de artigos mostrando a criação de uma Web API ASP .NET Core.
"Quem ama a
sua vida perdê-la-á, e quem neste mundo odeia a sua vida, guardá-la-á para a
vida eterna.
Se alguém me serve, siga-me, e onde eu estiver, ali estará também o meu servo.
E, se alguém me servir, meu Pai o honrará."
João 12:25,26
Referências:
ASP .NET Core - Implementando a segurança com ...
ASP.NET Core MVC - Criando um Dashboard ...
ASP .NET Core - Apresentando Razor Pages -
ASP .NET Core MVC - CRUD básico com ADO .NET
ASP .NET Core - Implementando e consumindo JWT
ASP .NET Core - Criando uma API CRUD - I
ASP .NET Core - Criando sua primeira Web API