WebApi na Linux przy użyciu .NET Core

Bartosz Szewczyk

WebApi na Linux przy użyciu .NET Core
Październik 9, 2017 Katarzyna Sobczak

WebApi na Linux przy użyciu .NET Core

W tym artykule opiszę jak stworzyć API przechowywującą listę zakupów w oparciu o ASP.NET Core na platformę Linux.

Opis API

API Opis Odpowiedz
GET /api/listazakupow Pobierz wszystkie Tablica elementu
GET /api/listazakupow/{id} Pobierz konkretny element Element
POST /api/listazakupow Dodaj nowy element Element
PUT /api/listazakupow Zaktualizuj istniejący element Element
DELETE /api/listazakupow/{id} Usuń istniejący element Informacja czy się udało usunąć

Co to ASP.NET Core

Jest to nowoczesny Framework do tworzenia aplikacji zarówno desktopowych, jak i internetowych. Core jest tworzone w idei otwartego oprogramowania – całe repozytorium kodu jest dostępne za darmo na GitHub. ASP .NET Core jest wieloplatformowy, co oznacza, że możemy tworzyć i uruchamiać aplikacje na wielu różnych systemach operacyjnych, takich jak Windows, Mac OS X i Linux.

Wymagania

Aby rozpocząć pracę nad naszym API potrzebujemy komputera lub maszyny wirtualnej z zainstalowanym Linuxem. Na rynku istnieje wiele dystrybucji Linuxa, jednak wśród nich warto wyróżnić Ubuntu, który jest zarówno bardzo prosty w obsłudze, jak i przyjazny programistom.

Na naszej maszynie musimy zainstalować następujące oprogramowanie:

Tworzenie projektu

Aby utworzyć projekt otwieramy terminal i wywołujemy poniższe polecenia. Najpierw musimy utworzyć folder projektu i do niego przejść:


mkdir ListaZakupowApicd ListaZakupowApi

Następnie tworzymy solucje za pomocą komendy dotnet new webapi i przebudowujemy ją za pomocą komendy dotnet restore:


dotnet new webapidotnet restore

Pierwsze uruchomienie

Aby uruchomić nasze nowo powstałe API wywołujemy komendę:


dotnet run

Po odwiedzeniu strony localhost:5000/api/values powinino nam się wyświetlić [„value1”,”value2”].

Jeżeli widzimy tę frazę, to znaczy, że nasze API działa.

Dodanie Entity Framework Core

Następnie uruchamiamy Visual Studio Code i otwieramy za jego pomocą folder ListaZakupowApi.
Następnie dodajemy linijkę odpowiedzialną za Entity w pliku ListaZakupowApi.csproj w sekcji ItemGroup, która odpowiada za PackageReference:


<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="2.0.0" />

Po dodaniu referencji musimy przywrócić pakiety naszej aplikacji za pomocą komendy w konsoli:


dotnet restore

Model danych

Musimy stworzyć klasę, która będzie reprezentować dane, którymi będziemy manipulować w tworzonym API. W modelu musimy przechowywać:

  • Identyfikator
  • Nazwę produktu
  • Ilość

Musimy utworzyć folder Models, w którym stworzymy naszą klasę.

Komunikacja z bazą danych

Następnie trzeba stworzyć klasę ListaZakupowContext, która będzie dziedziczyć po DbContext. Klasa DbContext jest odpowiedzialna za komunikację z bazą danych. W katalogu Models dodajemy plik ListaZakupowContext.cs.

Rejestrowanie

Następnie trzeba zarejestrować ListaZakupowContext w pliku Startup.cs. Musimy dodać referencje do Entity i do klas utworzonych w katalogu Models. Aby to zrobić, przed namespace musimy dodać:


using Microsoft.EntityFrameworkCore;using ListaZakupow.Models

Następnie w metodzie ConfigureServices dodamy:


services.AddDbContext<TodoContext>(_ => _.UseInMemoryDatabase());

Dodanie nowego kontrolera

W folderze Controllers należy utworzyć nową klasę ListaZakupowController. Następnie trzeba utworzyć kontruktor, który będzie inicjalizował komunikację z bazą danych. Dla ułatwienia testowania dodałem fragment kodu, który tworzy rekord w bazie danych, jeżeli liczba zakupów jest pusta. Nasza baza jest trzymana w pamięci, więc po każdym ponownym uruchomieniu aplikacji będzie ona zerowana.

Następnie dodajemy dwie metody:

  • GetAll – która zwróci nam listę wszystkich zakupów
  • GetById z parametrem id, która zwróci nam tylko jeden, konkretny element.

Po uruchomieniu aplikacji i wejściu pod adres localhost:5000apilistazakupow powinniśmy otrzymać listę wszystkich zakupów w formie tablicy JSON.

Implementacja pozostałych operacji CRUD

Następnie trzeba dodać metody:

  • Create – odpowiedzialna za tworzenie nowego obiektu
  • Update – odpowiedzialna za aktualizacje obiektu
  • Delete – odpowiedzialna za usuwanie obiektu

Create

Najpierw tworzymy metodę Create z atrybutem [HttpPost], której parametrami będzie obiekt klasy Zakup. Metoda sprawdza, czy ten obiekt nie jest pusty. Jeżeli nie jest pusty, wtedy dodaje go do bazy danych i wywołuje metodę GetById, a jako parametr przyjmuje id nowododanego obiektu.

Dzięki wtyczce do Google Chrome – Postman – możemy z łatwością przetestować nową metodę.

Trzeba ustawić adres naszego kontrolera. Następnie zmienimy typ zapytania na POST, w sekcji Body wybieramy Raw i zmieniamy typ danych na JSON.

W zapytaniu tworzymy JSON z danymi nowego obiektu zakupy:


{      „name": „Masło",      „count": 1}

Następnie klikamy przycisk Send. W odpowiedzi powinniśmy dostać nowy element dodany do bazy danych.

Update

Tworzymy metodę Update z atrybutem [HttpPut(„id”)] z parametrami id i obiektem zakup. Metoda ta sprawdzać będzie, czy obiekt nie jest pusty i czy w bazie danych istnieje rekord o podanym w parametrze identyfikatorze. Jeżeli tak, to zaktualizuje ten rekord i zwróci 204 – No Content.

Aby przetestować nowo powstałą metodę uruchamiamy Postmana. Trzeba ustawić adres naszego kontrolera. Pamiętajmy, że musimy podać id – w tym przypadku adres będzie wyglądał tak:

localhost:5000/api/listazakupow/1

Następnie zmienimy typ zapytania na PUT, w sekcji Body wybieramy Raw i zmieniamy typ danych na JSON.
W zapytaniu tworzymy JSON z danymi nowego obiektu zakupy:


{      „id": 1,      „name": „Masło",      „count": 1}

Następnie klikamy przycisk Send. Jeżeli wszystko poprawnie się wykonało, to powinno nam zwrócić 204 No Content. Aby mieć pewność, że wszystko działa poprawnie, można wejść na stronę localhost:5000apilistazakupow i upewnić się, że odpowiedni rekord został zaktualizowany.

Delete

Tworzymy metodę Delete z atrybutem [HttpDelete(„id”)], dla której jako parametr wchodzi id obiektu, który chcemy usunąć.
Metoda ta sprawdza, czy istnieje w bazie danych obiekt o takim identyfikatorze i go usuwa. Na końcu, jeżeli wszystko się udało, zwraca nam 204 No Content.

Aby przetestować nowo powstałą metodę uruchamiamy Postmana. Trzeba ustawić adres naszego kontrolera – pamiętajmy, że musimy podać id – w tym przypadku adres będzie wyglądał tak:
localhost:5000/api/listazakupow/1

Następnie zmienimy typ zapytania na DELETE, a sekcja Body musi być pusta. Po naciśnięciu Send powinno nam zwrócić 204 No Content.

Zakończenie

Udało się stworzyć WebApi, w którym możemy tworzyć, odczytywać, edytować i usuwać dane.

W tym artykule nauczyliśmy się

  • Stworzyć projekt z konsoli przy pomocy dotnet.
  • Stworzyć proste WebApi.
  • Testować api przy pomocy Postman.

Pełen kod do aplikacji znajduje się w repozytorium GitHub.

Podziel się

Autor: Bartosz Szewczyk

Bartosz Szewczyk

Bartosz Szewczyk

Zespół: Apps

Ostatnie artykuły autora

Rozliczanie przebiegów aut w przedsiębiorstwie w 5 minut

Rozliczanie przebiegów aut w przedsiębiorstwie w 5 minut

Bartosz Szewczyk przedstawia rozwiązanie, które pomaga zarządzać w samochodami w przedsiębiorstwie, zapewniając komfort i szybkość pracy użytkowników.

Synchronizator poczty z Exchange do SharePoint

Synchronizator poczty z Exchange do SharePoint

W artykule przedstawiono rozwiązanie pozwalające na synchronizację wiadomości w czasie rzeczywistym z Exchange do SharePoint w celu dostarczenia użytkownikowi dodatkowych, niedostępnych w programie Outlook możliwości pracy nad załącznikami oraz przyspieszenie dostępu do danych.

Routing w Angular

Routing w Angular

Routing umożliwia nawigowanie między komponentami w aplikacji bez jej przeładowywania. W artykule przestawiam, jak we frameworku Angular4 zaimplementować przykładowy routing.

Skontaktuj się z Bartoszem

 

Administratorem danych gromadzonych z wykorzystaniem formularza jest A.P.N. Promise S.A. Podane przez Ciebie dane będą przetwarzane w zakresie niezbędnym do podjęcia kontaktu lub realizacji określonego żądania zgodnie z art. 6 ust. 1 lit. b RODO przez okres niezbędny dla realizacji Twojego zgłoszenia. Wszelkie informacje w zakresie przetwarzania podanych przez Ciebie w formularzu danych oraz posiadanych uprawnieniach znajdziesz w Polityce prywatności. Kliknij i dowiedz się więcej jeżeli informacje podane powyżej nie są dostatecznie jasne!