ich binden mit der Einstellung Status-Code, um eine schöne und einfache API zu erhalten und die Dokumentation von Prahlerei (swashbuckle)Set Status-Code und Inhalt in WebAPI
Zuerst mein Controller erhalten sah wie folgt aus:
public class ValuesController : ControllerBase
{
[SwaggerResponse(HttpStatusCode.OK, Type = typeof(List<Value>))]
[HttpGet, System.Web.Mvc.Route("api/values/")]
public async Task<List<Value>> GetValues(HttpRequestMessage request)
{
using (DatabaseContext context = new DatabaseContext())
{
return await context.Values.Take(10).ToListAsync();
}
}
}
Alles in Ordnung, Swagger zeigt das Ergebnis JSON-formatiert. Problem ist, ich kann den Statuscode nicht setzen (zB wenn ich einen Datenbankfehler auf Err 500 oder s.th. Setzen könnte).
Here ich lesen, für einen Statuscode einstellen müssen wir ich geändert meinen Code ein HttpResponseMessage
So zurückzukehren:
public class ValuesController : ControllerBase
{
[SwaggerResponse(HttpStatusCode.OK, Type = typeof(HttpResponseMessage))]
[HttpGet, System.Web.Mvc.Route("api/values/")]
public async Task<HttpResponseMessage> GetValues(HttpRequestMessage request)
{
using (DatabaseContext context = new DatabaseContext())
{
var valuesToReturn = await context.Values.Take(10).ToListAsync();
return request.CreateResponse(HttpStatusCode.NotModified, valuesToReturn);
}
}
}
Nun wird der Statuscode richtig eingestellt, aber Prahlerei nicht Zeige irgendein Ergebnis.
So, dachte ich, das vielleicht ein Prahlerei-Problem.
nächste Schritt war die API mit Chromes Boomerang-Plugin zu testen, aber gleich: Statuscode 304 ist, aber der Körper (Ergebnis/content) leer:
Haben Sie eine Idee, wie Sie den Körper richtig mit der HttpResponseMessage einstellen? Oder irgendeine Idee, wie man den Statuscode in der API-Methode setzt, wenn der Rückgabewert z.B. List<Value>
?
Ja das war auch ein Problem. –
@MatthiasBurger das ist das Hauptproblem;) siehe meinen Kommentar zu meiner Antwort –
@its_time_for_weekend verdammt Sie beide haben Recht. habe gerade deine Lösung mit 304 getestet und es hat nicht funktioniert. Großartig, habe heute etwas gelernt. –