In this article, we will learn how to configure formats in ASP.NET Core Web API like,
JSON is the default format in ASP.NET Core but assume you need, for some reasons, to support XML format globally. Doing that is easy.
Step 1
Open Visual Studio.
Visual Studio
Step 2
Create a new project.
Visual Studio - Create new project
Step 3
Select Web >> ASP.NET CORE Web Application
ASP.NET CORE Web Application
Step 4
Select Web API.
Asp.Net Core Web API
Step 5
Add a new folder and name it Models. Then, add a new class with the following code and name it Employee.
  1. public class Employee
  2. {
  3. public int Id;
  4. public string FirstName;
  5. public string LastName;
  6. }
Step 6
Open ValuesController.cs
Asp.Net Core Web API
Step 6
Modify "Get" method to return the list of employees.
  1. [HttpGet]
  2. public List<Employee> Get()
  3. {
  4. return new List<Employee> { new Employee { Id = 1, FirstName = "Omar", LastName = "Maher" },
  5. new Employee { Id = 2, FirstName = "Ahmed", LastName = "Ali" }};
  6. }
Run the project by pressing F5. You will get the following result.
Asp.Net Core Web API
Step 7
To support XML format, you should add Microsoft.AspNetCore.Mvc.Formatters.Xml package.
Step 8
Right click on the project and select "Manage NuGet Packages".
Manage NuGet Packages
Step 9
Type Microsoft.AspNetCore.Mvc.Formatters.Xml in the box and install it.
Microsoft.AspNetCore.Mvc.Formatters.Xml
Step 10
Open Startup.cs file and edit ConfigureServices.
  1. public void ConfigureServices(IServiceCollection services)
  2. {
  3. services.AddMvc().AddXmlSerializerFormatters();
  4. }
AddXmlSerializerFormatters() method will add XML format to our project.
Step 11
Coem back to the ValuesController.cs file and edit Get method to add Produces filter.
Produces filter takes the type of format that you want to use. In our example, we are trying to use XML format. So, we will pass “application/xml".
  1. [HttpGet]
  2. [Produces("application/xml")]
  3. public List<Employee> Get()
  4. {
  5. return new List<Employee> { new Employee { Id = 1, FirstName = "Omar", LastName = "Maher" },
  6. new Employee { Id = 2, FirstName = "Ahmed", LastName = "Ali" }};
  7. }
Step 12
Run the project. You will get the following result.
Asp.Net Core Web API
Step 13
To ensure if other actions still return JSON, edit Get(int id) as shown below.
  1. // GET api/values/1
  2. [HttpGet("{id}")]
  3. public Employee Get(int id)
  4. {
  5. var employees = new List<Employee> { new Employee { Id = 1, FirstName = "Omar", LastName = "Maher" },
  6. new Employee { Id = 2, FirstName = "Ahmed", LastName = "Ali" }};
  7. return employees.Where(e=>e.Id == id).Select(e=>e).FirstOrDefault();
  8. }
Step 14
Run the project. You will see the JSON result.
Asp.Net Core Web API JSON
Now, what if you want to support XML for all the applications?
Step 1
Go back to Startup.cs file and add edit ConfigureServices.
Add the filtter here to be applied in the whole application.
  1. public void ConfigureServices(IServiceCollection services)
  2. {
  3. services.AddMvc(options =>
  4. {
  5. options.Filters.Add(new ProducesAttribute("application/xml"));
  6. })
  7. .AddXmlSerializerFormatters();
  8. }
Step 2
Run the project.
Asp.Net Core Web API
Summary
Changing the format in ASP.NET Core is very easy and flexible.
I hope this article will help you someday in real world apps.