Cuando estamos desarrollando un Web API, es factible responder en distintos formatos, por ejemplo, JSON, XML u otro, esto también es conocido como negociación de contenido.

En esta ocasión, podremos visualizar un ejemplo muy sencillo para hace que nuestro Web API responda tanto en JSON, como en XML.

.Net Core 2.x (desconozco si lo hace en una versión anterior), responde de manera predeterminada en JSON, por lo que, para responder en XML debemos instalar un package:

Lo que haremos a continuación, es indicar a nuestro proyecto que, según el key «Accept» que nos envíen en la cabecera de la petición, vamos a especificar un formato de respuesta diferente.

Para realizar esto, vamos a la clase Startup.cs, y dentro del método ConfigureServices agregamos un pequeño código en la especificación MVC, en donde debería quedar algo similar a esto

Y es así como de forma muy sencilla, podemos responder según nuestra necesidad, a continuación imágenes que muestran como responde

without Header
application/json key header
Manejar la negociación de contenido de manera sencilla, respondiendo Json o XML según lo requiera el cliente.
text/xml key header

El proyecto de ejemplo lo puedes encontrar en GitHub.

Este tutorial está basado en «Five RESTFul Web Design Patterns Implemented in ASP.NET Core 2.0 Part 1: Content Negotiation«, escrito por Jeremy Likness