W Web Api przy użyciu dotnet core dane mogą być zwrócone na kilka sposobów.
Zwracany typ
Pierwszy, najprostszy sposób, metoda w kontrolerze zwraca dane typu np. IEnumerable<string>. Najszybsze i najprostsze rozwiązania, niestety, jeśli chcemy zwrócić jakąś inną odpowiedź http niż OK to za bardzo nie mamy takiej możliwości. Korzystając na przykład z return BadRequest() dostaniemy błąd kompilacji że zwracany typ się nie zgadza.
1 2 3 4 5 6 7 8 |
[HttpGet] public IEnumerable<string> GetValuesEnumerable() { return new[] { "hello", "world" }; } |
IActionResult
IActionResult zezwala na zwracanie różnych odpowiedzi http w zależności od potrzeb. W tym wypadku, nie jesteśmy w stanie zwrócić już bezpośrednio kolekcji, musimy ją opakować w odpowiedź OK().
1 2 3 4 5 6 7 8 9 10 |
[HttpGet] public IActionResult GetValuesIActionResult() { var values = new[] { "hello", "world" }; return Ok(values); } |
IActionResult<T>
Typ wprowadzony w ASP.NET Core 2.1, łączy dwa powyższe rozwiązania. Korzystając z tego typu, mamy gwarancję że nasza metoda zwróci na pewno żądany typ, na przykład IEnumerable<string>. Dodatkowo w zależności od zapotrzebowania możemy zwrócić inne odpowiedzi http.
1 2 3 4 5 6 7 8 |
[HttpGet] public ActionResult<IEnumerable<string>> GetValuesActionResult() { return new[] { "hello", "world" }; } |
Kod z posta dostępny na github – link