Przejdź do treści stopki
Iron Academy Logo
Aplikacja C#
Aplikacja C#

Inne Kategorie

Buduj Klon Postman: Projektowanie Biblioteki Klas dla Wywołań API

Tim Corey
47m 58s

API znajdują się w sercu nowoczesnego rozwoju aplikacji, a posiadanie odpowiednich narzędzi do testowania i interakcji z nimi jest kluczowe. Film Tima Corey'a "Class Library Design: Building a Postman Clone" prowadzi nas przez tworzenie klonu Postmana na bazie desktopowej krok po kroku.

W tym artykule zbadamy, jak zbudować klon Postmana, zagłębiając się w szczegółową metodologię, którą Tim Corey demonstruje w swoim filmie. Tim prowadzi nas krok po kroku przez tworzenie biblioteki klasowej, która umożliwia wywołania API w naszej aplikacji. Na końcu będziemy mieli działającą wersję MVP (minimum viable product) naszego klonu Postmana.

Ten proces jest przyjazny dla początkujących, ale także pokazuje kluczowe zasady programowania, które są wartościowe dla deweloperów chcących stworzyć własne aplikacje takie jak Postman. Zgłębmy ten proces.

Wprowadzenie i konfiguracja

Tim zaczyna od wyjaśnienia celu tej lekcji: stworzenie logiki biznesowej i warstwy dostępu do danych, aby wywołania API działały w aplikacji. Podkreśla, że jest to MVP – wersja funkcjonalna, którą można później rozbudować.

Przed przejściem do kodu, Tim wspomina, że kurs został zaprojektowany, aby był przyjazny dla portfolio, chociaż ostrzega przed bezpośrednim kopiowaniem projektu. Zamiast tego zachęca deweloperów do korzystania z niego jako inspiracji do tworzenia unikalnych projektów, które pokazują umiejętności w C#, interakcje z API i projektowanie UI.

Tworzenie klasy dostępu do API

Tim prowadzi nas przez otwarcie biblioteki klasowej i rozpoczęcie z czystą kartą. Usuwa domyślną klasę Class1 i tworzy nową klasę o nazwie APIAccess. To będzie obsługiwało wszystkie interakcje z API.

Wyjaśnia swoje podejście do projektowania metody: zaczynając od metod public void, dodając parametry takie jak string url, a następnie stopniowo przekształcając je w async tasks, które mogą obsłużyć wywołania API prawdziwego świata.

public class APIAccess
{
    private readonly HttpClient client = new();

    public async Task<string> CallApiAsync(string url)
    {
        var response = await client.GetAsync(url);
        if (response.IsSuccessStatusCode)
        {
            return await response.Content.ReadAsStringAsync();
        }
        return $"error: {response.StatusCode}";
    }
}

Tim podkreśla, że ważne jest stworzenie jednego wystąpienia klienta HTTP, aby unikać ponownej inicjalizacji przy każdym wywołaniu, co poprawia wydajność.

Obsługa odpowiedzi API

Gdy klient HTTP jest na miejscu, Tim pokazuje, jak pobrać odpowiedź z wywołania API. Zwraca uwagę na znaczenie zwracania Task zamiast async void, z wyjątkiem handlerów zdarzeń.

Aby zademonstrować, Tim używa przykładowego API z JSON Placeholder, które dostarcza fejkowych danych, takich jak posty, komentarze i zadania. Wkleja adres URL API w HTML formularza UI i używa pola results.Text do wyświetlania odpowiedzi HTML lub JSON.

results.Text = await api.CallApiAsync(apiText.Text);

Tim zauważa, że surowe wyjście JSON jest czytelne dla komputera, ale nie dla użytkownika, co prowadzi do kolejnego kroku: formatowania JSON.

Formatowanie wyjścia JSON

Tim pokazuje, jak uczynić odpowiedź JSON bardziej czytelną za pomocą JsonSerializer:

var jsonElement = JsonSerializer.Deserialize<JsonElement>(responseJson);
var prettyJson = JsonSerializer.Serialize(jsonElement, new JsonSerializerOptions { WriteIndented = true });

To pozwala programistom wyświetlać czytelny JSON w interfejsie użytkownika, co jest łatwiejsze do odczytania w edytorach tekstu JSON lub podczas testowania punktów końcowych. Tim dodaje również opcję przełączania między surowym a sformatowanym wyjściem, dając elastyczność w zależności od tego, czy dane będą wyświetlane w interfejsie użytkownika, czy przetwarzane programowo.

Planowanie przyszłych ulepszeń

Chociaż MVP obsługuje tylko żądania GET, Tim demonstruje, jak zaplanować inne działania HTTP, takie jak POST, PATCH, PUT i DELETE. Tworzy enum o nazwie HTTPAction z domyślną wartością GET, przygotowując kod do skalowania bez przepisywania istniejących metod.

public enum HTTPAction
{
GET
}

To przyszłościowe podejście jest świetnym przykładem dla programistów, którzy chcą zbudować własny klon Postmana, który będzie łatwy w utrzymaniu i rozbudowie.

Weryfikacja URL

Tim wprowadza metodę weryfikacji URL, aby zapewnić, że użytkownicy podają tylko prawidłowe punkty końcowe HTTPS:

public bool IsValidURL(string url)
{
if (string.IsNullOrWhiteSpace(url)) return false;
return Uri.TryCreate(url, UriKind.Absolute, out Uri uriResult) && uriResult.Scheme == Uri.UriSchemeHttps;
}

Wyjaśnia znaczenie nieufania wejściu użytkownika i weryfikowania go wielokrotnie, gdzie to konieczne. To zapewnia, że aplikacja nie ulegnie awarii z powodu nieprawidłowych URL i zapobiega przerwaniu pracy przez komunikaty o błędach.

Integracja dostępu API z interfejsem użytkownika

Po wprowadzeniu walidacji Tim pokazuje, jak zintegrować dostęp API z interfejsem użytkownika dashboardu:

  1. Zainstancjonuj klasę APIAccess.

  2. Sprawdź poprawność URL.

  3. Wyświetl odpowiedź JSON w edytorze tekstów wyników.

  4. Pokaż znaczące komunikaty o błędach dla nieprawidłowych lub nieudanych żądań.
if (!api.IsValidURL(apiText.Text))
{
systemStatus.Text = "Nieprawidłowy URL";
results.Text = string.Empty;
return;
}
results.Text = await api.CallApiAsync(apiText.Text);

Tim podkreśla znaczenie czystego projektu UI, rozpoczynając każde żądanie od pustego obszaru wyników i aktualizując status systemu w zależności od sukcesu lub niepowodzenia.

Używanie interfejsów do wstrzykiwania zależności i testowania jednostkowego

Tim przedstawia IAPIAccess, interfejs dla APIAccess. To najlepsza praktyka dla testowania jednostkowego i przygotowania kodu do wstrzykiwania zależności:

public interface IAPIAccess
{
Task<string> CallApiAsync(string url);
bool IsValidURL(string url);
}

Pisząc kod w oparciu o interfejs, a nie konkretną klasę, programiści mogą zamieniać implementacje na potrzeby testów lub upgrade'ować logikę API bez zmiany UI lub innego zależnego kodu. Tim podkreśla, że chociaż jest to może nieco przesadzone dla MVP, to jest wartościowe dla przyszłych ulepszeń aplikacji.

Testowanie i uruchamianie aplikacji

Gdy wszystkie elementy są gotowe, Tim uruchamia aplikację na Windows, wkleja URL z JSON Placeholder i pomyślnie wyświetla sformatowaną odpowiedź JSON. Pokazuje, jak nieprawidłowe URL są poprawnie odrzucane, zapewniając, że aplikacja jest odporna nawet na błędy wejściowe użytkownika.

To tworzy funkcjonalny klon Postmana zdolny do wykonywania żądań GET, weryfikowania wejścia i wyświetlania odpowiedzi w przyjaznym dla użytkownika formacie.

Następne kroki: Integracja portfolio i GitHub

Tim zamyka lekcję, podkreślając znaczenie przekształcenia tego projektu w pozycję nadającą się do portfolio. Sugeruje:

  • Stworzenie repozytorium GitHub dla projektu.

  • Dodanie przejrzystego README, które wyjaśnia aplikację.

  • Uwzględnienie pliku wykonywalnego do pobrania dla innych w celu przetestowania.

  • Wyróżnienie UI i funkcji na zrzutach ekranu lub GIF-ach.

  • Dokumentowanie procesu, instalacji i struktury kodu.

Ostrzega przed po prostu kopiowaniem jego kodu i przesyłaniem go jako własnego. Zamiast tego programiści powinni używać tych lekcji do stworzenia własnego klonu Postmana lub podobnej aplikacji, która odzwierciedla ich osobisty styl i umiejętności.

Postępując zgodnie z tym podejściem, programiści nie tylko pokazują biegłość w kodowaniu, ale także zdolność do eksploracji, aktualizacji i utrzymywania projektu oprogramowania, co jest nieocenione dla potencjalnych pracodawców.

Wnioski

Wideo Tima Corey'ego video stanowi kompleksowy przewodnik po budowaniu klonu Postmana od podstaw. Od ustawienia biblioteki klas po obsługę wywołań API, formatowanie odpowiedzi JSON, weryfikację wejść i przygotowanie projektu do przyszłych ulepszeń z interfejsami i wstrzykiwaniem zależności, ta lekcja obejmuje cały proces tworzenia aplikacji.

Korzystając z tego podejścia, programiści mogą stworzyć MVP klon Postmana przy użyciu zwykłego C#, zintegrować elementy UI do wyświetlania odpowiedzi HTML lub JSON oraz przygotować projekt GitHub gotowy do prezentacji w portfolio. Ta krok po kroku metodologia nie tylko uczy kodu, ale także podkreśla planowanie, proces i myślenie projektowe, które są kluczowymi umiejętnościami dla profesjonalnych programistów.

Hero Worlddot related to Buduj Klon Postman: Projektowanie Biblioteki Klas dla Wywołań API
Hero Affiliate related to Buduj Klon Postman: Projektowanie Biblioteki Klas dla Wywołań API

Zarabiaj więcej, dzieląc się tym, co kochasz

Tworzysz treści dla deweloperów pracujących z .NET, C#, Java, Python, czy Node.js? Zamień swoją wiedzę specjalistyczną na dodatkowy dochód!

Zespol wsparcia Iron

Jestesmy online 24 godziny, 5 dni w tygodniu.
Czat
Email
Zadzwon do mnie