API z Visual Studio Scaffolding
Tworzenie interfejsu API od zera to nie lada wyzwanie. Mnogość elementów do zaprogramowania, możliwość popełnienia błędów składniowych czy literówek – to tylko niektóre z przeszkód, które mogą spowolnić pracę nad projektem.
Na szczęście z pomocą przychodzi funkcja Scaffolding w Visual Studio. Ten potężny mechanizm automatyzacji pozwala zaoszczędzić mnóstwo czasu, generując niezbędny kod i konfigurację, dzięki czemu możesz skupić się na najważniejszych aspektach aplikacji, takich jak logika biznesowa.
W tym wpisie pokażę Ci, jak krok po kroku, korzystając z rusztowania (scaffolding) Visual Studio, stworzyć w pełni funkcjonalny interfejs API do rejestracji kontaktów. Dowiesz się, jak szybko wygenerować kluczowe elementy projektu – od modeli, przez konfigurację bazy danych, aż po gotowe punkty końcowe CRUD (Create, Read, Update, Delete).
Gotowy, by zwiększyć efektywność swojej pracy i uniknąć żmudnej ręcznej roboty?
Zanurzmy się w świat Scaffolding!
Krok 1: Przygotowanie projektu w Visual Studio
Pierwszy krok do stworzenia interfejsu API za pomocą Scaffolding to przygotowanie projektu w Visual Studio. Jeśli zaczynasz od zera, wybierz opcję ASP.NET Core Web API podczas tworzenia nowego projektu. Visual Studio zadba o to, aby Twoja aplikacja była gotowa do działania z najnowszymi bibliotekami i najlepszymi praktykami. Daj swojemu projektowi nazwę, która od razu wskazuje na jego funkcjonalność, i upewnij się, że wybrałeś odpowiednią wersję platformy .NET. Kilka kliknięć, a fundamenty Twojego API są gotowe – bez frustracji, bez komplikacji. To jak ustawienie sceny przed wielkim spektaklem!
Postępuj zgodnie z poniższymi krokami:
- Otwórz Visual Studio i kliknij Utwórz nowy projekt
- Wybierz opcję ASP.NET Core Web API
- Nadaj projektowi nazwę EasyContacts
- Wybierz wersję .NET 8
- W ustawieniach projektu zaznacz opcje:
- Konfiguruj dla HTTPS
- Włącz obsługę OpenAPI
- Kliknij Utwórz
Krok 2: Definiowanie podstaw w folderze “Entities”
Każde API potrzebuje solidnych fundamentów, a w naszym przypadku zaczniemy od stworzenia folderu Entities, który będzie przechowywać kluczowe klasy reprezentujące dane. Aby uprościć, w tej fazie ręcznie stworzymy tylko jedną klasę – Contact. To tutaj określimy wszystkie właściwości, które będą definiować nasz model kontaktu, takie jak imię, nazwisko, e-mail, numer telefonu i adres. Dzięki temu wszystkie niezbędne dane zostaną przejrzyście zorganizowane, a Twoje API od samego początku będzie spójne i gotowe na zaawansowane funkcjonalności.
To jedyny moment, w którym ręczne kodowanie będzie konieczne – resztę pracy przejmie za nas Scaffolding. Prosta struktura klasy i nowoczesne rozwiązania, takie jak automatyczne dodawanie daty utworzenia, sprawią, że ten krok przebiegnie szybko i intuicyjnie.
Postępuj zgodnie z poniższymi krokami:
- W utworzonym projekcie dodaj nowy folder o nazwie Entities
- Wewnątrz folderu stwórz klasę reprezentującą kontakt:
Krok 3: Tworzenie rusztowań (Scaffolding)
Teraz czas na skorzystanie z funkcji Scaffolding dostępnej w Visual Studio, która automatycznie wygeneruje strukturę interfejsu API.
Aby rozpocząć, kliknij prawym przyciskiem myszy projekt, a następnie wybierz Add > New Scaffolded Item….
W wyświetlonym oknie wybierz w menu po lewej API, a następnie opcję API z punktami końcowymi odczytu/zapisu, używając Entity Framework. Kliknij przycisk Dodaj.
W kolejnym oknie skonfiguruj podstawowe klasy EF i punkty końcowe.
W polu Model Class wybierz klasę Contact
.
W sekcjach Endpoint Class oraz DbContext Class kliknij ikonę „+”, aby automatycznie je dodać.
W polu Data Provider wybierz odpowiedni dostawcę, na przykład SQLight, lub inny, zgodny z Twoją bazą danych.
Pozostałe opcje możesz pozostawić bez zmian. Po skonfigurowaniu kliknij Dodaj, aby zakończyć proces.
Visual Studio wygeneruje dwie kluczowe klasy:
- EasyContactsContext – znajdziesz ją w folderze
Data
. Jest to klasa DbContext, zawierająca konfiguracje dla EF Core. Dziedziczy ona poDbContext
i pozwala na zarządzanie bazą danych poprzez operacje CRUD. WłaściwośćDbSet<Contact>
reprezentuje kolekcję jednostekContact
i umożliwia łatwą manipulację danymi. Dzięki przekazaniu parametrówDbContextOptions
do klasy bazowej konstruktor definiuje m.in. połączenie z bazą. - ContactEndpoints – organizuje punkty końcowe API, dzięki czemu kod jest bardziej przejrzysty i modularny. Ta klasa zawiera gotowe punkty końcowe dla operacji CRUD oraz wspiera grupowanie tras za pomocą
MapGroup
, co poprawia czytelność kodu. Dodatkowo metodaAsNoTracking()
zwiększa wydajność, eliminując monitorowanie zmian w obiektach.
Dzięki Scaffolding, klasa Program
zostaje automatycznie zaktualizowana. Zostaje w niej dodana konfiguracja dla AddDbContext
(z dostawcą, np. UseSqlite
, oraz ciągiem połączenia). W pliku appsettings.json
znajdziesz wygenerowany ciąg połączenia.
Dzięki tym krokom Twój interfejs API jest gotowy do pracy i od razu funkcjonalny!
Krok 4: Tworzenie i uruchamianie migracji EF Core
Migracje EF Core to funkcjonalność, która automatycznie generuje i uruchamia skrypty bazy danych, tworząc niezbędne struktury (bazy danych i tabele) na podstawie encji aplikacji. Dzięki temu możesz zaoszczędzić czas i uniknąć błędów podczas ręcznej konfiguracji bazy danych. Oto, jak łatwo wykonać ten proces za pomocą funkcji Scaffolding w Visual Studio:
Po zakończeniu tego procesu baza danych oraz odpowiadające jej tabele zostaną utworzone zgodnie z Twoim modelem danych. Możesz łatwo sprawdzić strukturę bazy, potwierdzając, że została poprawnie zaktualizowana na podstawie migracji.
- Dodawanie migracji
- W Visual Studio i przejdź do zakładki Connected Services (Połączone usługi) i kliknij ją dwukrotnie
- W prawym rogu okna przy wybranej bazie SQLight kliknij ikonę z trzema kropkami, a następnie wybierz opcję Dodaj migrację.
- W nowym oknie wybierz klasę kontekstu (np.
EasyContactsContext
) i kliknij Zakończ. - Migracja została utworzona – możesz ją przejrzeć w odpowiednim folderze projektu, co pozwala zobaczyć wygenerowane skrypty SQL.
- Aktualizacja bazy danych
- W tej samej zakładce Connected Services kliknij ikonę z trzema kropkami i wybierz Zaktualizuj bazę danych.
- W nowym oknie wybierz context i kliknij przycisk Zakończ, aby uruchomić skrypty migracji.
Po zakończeniu tego procesu baza danych oraz odpowiadające jej tabele zostaną utworzone zgodnie z Twoim modelem danych. Możesz łatwo sprawdzić strukturę bazy, potwierdzając, że została poprawnie zaktualizowana na podstawie migracji.
Dzięki automatyzacji przez Scaffolding cały proces jest szybki, intuicyjny i minimalizuje ryzyko pomyłek!
Krok 5: Testowanie aplikacji
Po zakończeniu konfiguracji bazy danych i punktów końcowych, czas na testowanie naszej aplikacji! Uruchom projekt w Visual Studio i przejdź do przeglądarki. Sprawdź, czy interfejs API działa poprawnie, wywołując odpowiednie punkty końcowe. Możesz przetestować operacje CRUD (tworzenie, odczytywanie, aktualizowanie, usuwanie) na danych, aby upewnić się, że aplikacja komunikuje się z bazą danych bez problemów. Jeśli wszystko działa zgodnie z planem, gratulacje — właśnie stworzyłeś działający interfejs API za pomocą rusztowania Visual Studio!
Zakończenie
Jak widać, po przeprowadzeniu wszystkich kroków nasza aplikacja działa zgodnie z oczekiwaniami. Funkcje rusztowania w Visual Studio znacznie uprościły proces tworzenia interfejsu API CRUD, zapewniając nam poprawnie skonfigurowane klasy, kontrolery i konfiguracje bazy danych. Dzięki tym narzędziom zaoszczędzimy czas na ręcznym pisaniu powtarzalnego kodu, co pozwoli skupić się na bardziej złożonych aspektach aplikacji.
Rusztowanie w ASP.NET Core to doskonałe narzędzie, które przyspiesza rozwój aplikacji, szczególnie w projektach opartych na wzorcu MVC, gdzie generowanie standardowych komponentów pozwala zaoszczędzić cenny czas i zredukować liczbę błędów. Funkcje CRUD generowane automatycznie umożliwiają szybkie wdrożenie podstawowej funkcjonalności, dając programistom większą swobodę w implementacji specyficznych funkcji i reguł biznesowych.
Podsumowując, użycie rusztowania to efektywny sposób na szybkie rozpoczęcie pracy nad projektem, przy zachowaniu wysokiej jakości kodu zgodnej z najlepszymi praktykami ASP.NET Core. Jest to szczególnie cenne w przypadku rozwoju aplikacji z wykorzystaniem architektury API, gdzie czas i precyzyjność mają kluczowe znaczenie.