我正在尝试为我的.NET Core 1.1 WebApi添加CSV输出格式化程序。
我已经安装了WebAPIContrib.Core软件包(https://github.com/damienbod/WebAPIContrib.Core/tree/master/src/WebApiContrib.Core.Formatter.Csv)。
我的Startup现在看起来像这样:
我的问题是,如果我删除了produces属性并且没有发送accept头部,我仍然可以收到一个CSV文件。他怎么知道要返回一个CSV文件呢?我的其他方法仍然会生成JSON,这应该是正确的方式,只是我不明白为什么会这样,我担心这会在后面导致问题。
我已经安装了WebAPIContrib.Core软件包(https://github.com/damienbod/WebAPIContrib.Core/tree/master/src/WebApiContrib.Core.Formatter.Csv)。
我的Startup现在看起来像这样:
var csvFormatterOptions = new CsvFormatterOptions();
services.AddMvcCore(options =>
{
options.OutputFormatters.Add(new CsvOutputFormatter(csvFormatterOptions));
options.FormatterMappings.SetMediaTypeMappingForFormat("csv", MediaTypeHeaderValue.Parse("text/csv"));
})
.AddJsonFormatters()
.AddJsonOptions(options => new SerializationHelper().Configure(options.SerializerSettings));
我的控制器方法是完全通用的,看起来像这样
[HttpGet("/api/export")]
[Produces("text/csv")]
public async Task<List<Data>> GetDataAsCsv()
{
return await _someService.GetData();
}
我的问题是,如果我删除了produces属性并且没有发送accept头部,我仍然可以收到一个CSV文件。他怎么知道要返回一个CSV文件呢?我的其他方法仍然会生成JSON,这应该是正确的方式,只是我不明白为什么会这样,我担心这会在后面导致问题。