WebApi na Linux przy użyciu .NET Core

Bartosz Szewczyk

WebApi na Linux przy użyciu .NET Core
9 października, 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.

Zarejestruj się i przetestuj APN Meeting Room

Wypróbuj system rezerwacji sal w praktyce, na Twojej infrastrukturze.
Wersja demonstracyjna umożliwia Ci instalację oprogramowania na 3 urządzeniach.

Chcę otrzymywać treści marketingowe od A.P.N. Promise S.A. drogą elektroniczną
Chcę otrzymywać treści marketingowe od A.P.N. Promise S.A. telefonicznie

Administratorem danych osobowych gromadzonych z wykorzystaniem formularza jest A.P.N. Promise S.A. z siedzibą w Warszawie. Kontakt z osobą odpowiedzialną za ochronę danych osobowych jest możliwy za pośrednictwem adresu e-mail: iodo@promise.pl. Podane dane będą przetwarzane w zakresie niezbędnym do realizacji określonego żądania zgodnie z art. 6 ust. 1 lit. b RODO, w zakresie niezbędnym dla prawidłowej realizacji żądania oraz oferowania i świadczenia usług, marketingu produktów i usług własnych oraz przeprowadzenia ankiet i oceny satysfakcji zgodnie z art. 6 ust. 1 lit. f RODO przez okres niezbędny dla realizacji celów oraz w przypadku wyrażenia zgody na podstawie art. 6 ust. 1 lit. a RODO w celu dostarczenia treści marketingowych środkami komunikacji elektronicznej lub za pomocą urządzeń telefonicznych.

Przysługuje Ci prawo do żądania dostępu do danych osobowych, ich sprostowania, usunięcia lub ograniczenia przetwarzania, jak również prawo sprzeciwu wobec przetwarzania, prawo do przenoszenia danych, a także prawo złożenia skargi do organu nadzorczego, którym w Polsce jest Prezes Urzędu Ochrony Danych Osobowych. Podanie danych jest dobrowolne, jednak niezbędne dla realizacji powyżej wskazanych celów. Odbiorcami danych mogą być podmioty lub osoby obsługujące administratora w zakresie w zakresie hostingu, komunikatorów internetowych, usług IT, księgowości, archiwizacji. Więcej informacji w Polityce Prywatności oraz Regulaminie.

Register and test the APN Meeting Room booking system.

Registering and installing the trial version you are allowed to install the software on 3 devices.

I want to receive marketing content from A.P.N. Promise S.A. electronically
I want to receive marketing content from A.P.N. Promise S.A. by phone

The data controller of personal data collected using the form is A.P.N. Promise S.A. with its registered office in Warsaw. Contact with the person responsible for the personal data protection is possible via following e-mail address: iodo@promise.pl. The given data shall be processed to the extent necessary to carry out specified request in accordance with art. 6(1)(b) of GDPR and to the extent necessary for the correct realization of the request and offer and provision of services, own product and services marketing and conducting surveys and satisfaction ratings in accordance with art. 6(1)(f) of GDPR for the period necessary to achieve the purposes and in the event of consent in accordance with art. 6(1)(a) of the GDPR to provide marketing content by electronic means or by telephone devices.

You have the right to request access to your personal data, rectification, deletion or limitation of processing, as well as the right to object to processing, the right to transfer data and the right to lodge a complaint with a supervisory authority, i.e. the President of the Personal Data Protection Office in Poland. Providing data is voluntary but necessary for the realization of the above-mentioned purposes. Recipients of data may be entities or persons servicing the data controller in the field of hosting, instant messengers, IT services, accounting, archiving. More information in the Privacy Policy and Regulations.

Cybersecurity w obszarze zarządzania zasobami oprogramowania

Napisz do nas, a skontaktujemy się z Tobą i bezpłatnie porozmawiamy o Twoim poziomie cyberbezpieczeństwa w obszarze SAM.

 

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!

Zostaw adres mailowy i nie przegap kolejnego szkolenia!

[contact-form-7 404 "Not Found"]