We can create our own media formats in the ASP.NET Web API project
First of all, as root you create a folder called Formatters
And we create a class in this folder for the format we want to define(For example for csv format)
using System.Web.Http; using System.Web.Mvc; using Kartal.Formatters; public class DemoItemCsvFormatter : BufferedMediaTypeFormatter { public DemoItemCsvFormatter() { SupportedMediaTypes.Add(new System.Net.Http.Headers.MediaTypeHeaderValue("text/csv-demoitem")); } public override bool CanReadType(Type type) { return false; } public override bool CanWriteType(Type type) { return (type == typeof(DemoItem)) || type== (typeof(IEnumerable<DemoItem>)); } public override void WriteToStream(Type type, object value, Stream writeStream, HttpContent content) { using (var writer=new StreamWriter(writeStream)) { writer.WriteLine("Id,Number,Text"); var list = value as IEnumerable<DemoItem>; if (list != null) { foreach (var item in list) WriteDemoItem(item, writer); } else { var item = value as DemoItem; if (item == null) throw new InvalidOperationException("Type not supported"); WriteDemoItem(item, writer); } } } public void WriteDemoItem(DemoItem item,TextWriter writer) { writer.WriteLine($"{item.Id},{item.Number},{item.Text}"); } }
Then we add the following line to WebApi.config
config.Formatters.Add(new DemoItemCsvFormatter());
Now we can make a request for the format we specify
Good luck