Prosty API Controller

Kontynuuję zabawę z AspNetCore. W poprzednim artykule zrobiłem szkielet aplikacji, który udało się uruchomić.

Rozgrzewka

Czas na prosty kontroler API, który zwraca dane w postaci np. JSONa, które mogą zostać użyte np. w architekturze AJAX.

W katalogu Controllers  należy utworzyć nową klasę  SimpleApiController, która dziedziczy z  Controller. Do tej klasy dodajemy metodę Indeks zwracającą  IActionResult.

Po skompilowaniu i uruchomieniu można zaryzykować wpisanie do przeglądarki adresu http://localhost:5555/SimpleApi. Wynikiem powinno być coś w rodzaju

Czego nie widać w kodzie?

Kilka słów wyjaśnienia. Po pierwsze jakie jest powiązanie nazwy klasy, nazwy metody i URLa, który jest powiązany z wywoływaną metodą. Definicje tych zależności znajdują się w metodzie Configure klasy Startup. Definicja wygląda tak:

Domyślny szablon routowania czyli wyszukiwania klas i metod na podstawie adresu URL składa się z trzech elementów oddzielonych ukośnikami

  1. Nazwa kontrolera (jeśli zostanie pominięta to użyty będzie HomeController). Suffix „Controller” będzie dodany automatycznie stąd „SimpleApi” w przykładzie routuje na „SimpleApiController”
  2. Nazwa akcji (jeśli zostanie pominięta to będzie użyta akcja Index). W przykładzie powyżej wystąpił właśnie przypadek, gdzie Index został użyty jako domyślny.
  3. Nazwa parametru, który może być przekazany do metody.

Metoda z parametrem

Aby przetestować pkt 2 i 3 z powyżej opisanej reguły routowania możemy dopisać metodę

Test pierwszy to użycie adresu http://localhost:5555/SimpleApi/PowerOfPi/ . Została w nim wskazana metoda w dosłownym brzemieniu nazwy. Parametr został pominięty, więc zostanie przyjęta wartość domyślna. Dla int jest to 0. Wynik jaki otrzymamy to

Drugi test to użycie adresu http://localhost:5555/SimpleApi/PowerOfPi/3 . Tutaj jawnie podajemy wartość 3. Rezultat na wyjściu to :

Ważne

  1. Nazwa parametru musi być zgodna z nazwą użytą w szablonie a więc „id”. Przemianowanie nazwy argumentu metody spowoduje, że nie zostanie wstrzyknięta wartość rozpoznana w URLu
  2. Podanie wartości niezgodnej z oczekiwanym typem spowoduje zignorowanie wartości. Zatem wywołanie http://localhost:5555/SimpleApi/PowerOfPi/3.4  spowoduje, że metoda zostanie wywołana z parametrem 0. Oczywiście można zmienić typ danych z int na double. Wtedy będą akceptowane wartości z separatorem dziesiętnym w postaci kropki