Ich versuche, einen CSV-Ausgabeformatierer zu meinem .NET Core 1.1 WebApi hinzuzufügen..net Core WebApi Inhalt Verhandlung
Ich habe das WebAPIContrib.Core-Paket (https://github.com/damienbod/WebAPIContrib.Core/tree/master/src/WebApiContrib.Core.Formatter.Csv) installiert.
My Startup nun so aussehen:
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));
Mein Controller-Methode vollständig generisch ist und sieht wie folgt aus
[HttpGet("/api/export")]
[Produces("text/csv")]
public async Task<List<Data>> GetDataAsCsv()
{
return await _someService.GetData();
}
Mein Problem ist, dass, wenn ich das Attribut entfernen produziert und nicht senden ein Akzeptieren Header Ich bekomme immer noch eine CSV. Wie kann er wissen, eine CSV zurückzusenden? Meine anderen Methoden produzieren immer noch JSON, so wie es sein sollte, ich verstehe einfach nicht, warum das so ist, und ich fürchte, es wird ein Problem auf der ganzen Linie verursachen.
Ich will nicht AddMvc verwenden, da es sich um ein WebAPI ist und ich Razor nicht brauchen. AddMvcCore kann genau dasselbe tun, ich muss nur die Dienste angeben, die ich hinzufügen möchte. Mein Problem ist, dass, wenn ich * nicht * einen accept-Header spezifiziere und das Attribut products entferne, ich immer noch einen csv bekomme, was für mich keinen Sinn ergibt. – Narcil
Versucht, Return zurückzugeben Ok (_someService.GetData()) ändert nichts. Ich bekomme immer noch eine CSV ohne das Attribut produziert und ohne einen Kopf akzeptieren. – Narcil
Überprüfen Sie die Reihenfolge, in der Sie die Formatierer hinzufügen. Zeigen Sie auch eine der Instanzen, wo JSON zurückgegeben wird – Nkosi