Nowoczesne API

Book description

Większość z najpopularniejszych dużych witryn internetowych zbudowano z użyciem technologii Web API. Może ona działać na podstawie protokołu HTTP — umożliwia wówczas łatwą pracę nad nowymi funkcjonalnościami aplikacji, kwestiami bezpieczeństwa, skalowalnością rozwiązań, obsługą nowych urządzeń lub aplikacji klienckich. W takim modelu aplikacji kluczowymi komponentami są typy danych i hipermedia. Wielu twórców API nie wykorzystuje jednak możliwości protokołu HTTP i wdraża API silnie powiązane z aplikacją klienta, co w zasadzie zamyka drogę do bezproblemowego ewoluowania systemu. Na dłuższą metę tego rodzaju rozwiązania są sprzeczne z podstawami internetu.

Niniejsza książka to wartościowy podręcznik dla projektantów, którzy chcą tworzyć API adaptujące się do zachodzących zmian. Autorzy zaprezentowali tu wszystkie narzędzia niezbędne do tworzenia ewoluujących systemów, a także przedstawili informacje dotyczące sieci i programowania Web API. Dokładnie omówili proces tworzenia nowego API za pomocą platformy ASP.NET Web API, z uwzględnieniem takich zagadnień, jak implementacja hipermediów z użyciem ASP.NET Web API oraz negocjowanie treści. Ten bardzo praktyczny podręcznik, pisany przez inżynierów oprogramowania, stanowi inspirację do projektowania najlepszych rozwiązań dla ewoluujących aplikacji internetowych.

W tej książce znajdziesz:
zwięzłe podstawy budowy sieci, protokołu HTTP, programowania API oraz platformy ASP.NET Web API
omówienie nowego modelu programowania HTTP na platformie .NET
objaśnienia dotyczące różnych modeli hostingu, w tym samohostowania, IIS i modelu OWIN
przedstawienie zasad działania routingu Web API i kontrolerów
praktyczną prezentację zagadnień bezpieczeństwa aplikacji
opis dobrych praktyk, takich jak testy akceptacji, programowanie TDD, techniki odwracania kontroli i wiele innych
Odkryj możliwości HTTP na nowo!

Table of contents

  1. Wprowadzenie
  2. Wstęp
    1. Dlaczego należy przeczytać tę książkę?
    2. Co trzeba wiedzieć, aby jak najwięcej skorzystać z tej książki?
    3. Jakie informacje zawiera ta książka?
      1. Część I. Podstawy
      2. Część II. Praktyczne programowanie API
      3. Część III. Podstawowe zasady Web API
    4. Konwencje zastosowane w książce
    5. Użycie przykładowych kodów
    6. Podziękowania
  3. Rozdział 1. Internet, World Wide Web i HTTP
    1. Architektura sieci
      1. Zasób
      2. URI
      3. Cool URI
      4. Reprezentacja
      5. Typ danych
        1. Rejestracja typu danych
    2. HTTP
      1. Wykraczamy poza HTTP 1.1
      2. Wymiana komunikatów HTTP
      3. Pośredniki
      4. Rodzaje pośredników
      5. Metody HTTP
        1. Żądania warunkowe
        2. Właściwości metody
      6. Nagłówki
      7. Kody stanu HTTP
      8. Negocjacja treści
      9. Buforowanie
        1. Koncepcja wygaśnięcia
        2. Koncepcja weryfikacji
        3. Utrata ważności
        4. Nagłówek ETag
        5. Buforowanie i negocjowanie odpowiedzi
        6. Działanie bufora
      10. Uwierzytelnianie
      11. Schematy uwierzytelniania
      12. Dodatkowe schematy uwierzytelniania
    3. Podsumowanie
  4. Rozdział 2. Web API
    1. Co to jest Web API?
    2. Co w kwestii usług sieciowych SOAP?
    3. Korzenie Web API
    4. Początek rewolucji Web API
    5. Zwrócenie uwagi na sieć
    6. Wskazówki dla Web API
    7. Typy danych charakterystyczne dla domeny
    8. Profile typów danych
    9. Wiele reprezentacji
    10. Style API
      1. Model dojrzałości Richardsona
      2. RPC (poziom 0 w modelu dojrzałości Richardsona)
      3. Zasoby (poziom 1 w modelu dojrzałości Richardsona)
      4. Metody HTTP (poziom 2 w modelu dojrzałości Richardsona)
      5. Pokonanie przepaści na drodze ku API zorientowanemu na zasoby
      6. Hipermedia (poziom 3 w modelu dojrzałości Richardsona)
      7. REST
      8. Ograniczenia REST
    11. Podsumowanie
  5. Rozdział 3. Podstawy ASP.NET Web API
    1. Najczęściej spotykane scenariusze
      1. Pierwsza klasa programowania HTTP
      2. Jednakowe możliwości podczas programowania po stronie klienta i serwera
      3. Elastyczna obsługa różnych formatów
      4. Nigdy więcej „tworzenia kodu z nawiasami ostrymi”
      5. Możliwość stosowania testów jednostkowych
      6. Wiele opcji w zakresie hostingu
    2. Rozpoczęcie pracy z ASP.NET Web API
    3. Nowy projekt Web API
      1. Plik WebApiConfig.cs
      2. Plik ValuesController.cs
    4. „Witaj, Web API!”
      1. Utworzenie usługi
        1. Usługa powitalna tylko do odczytu
        2. Negocjacja treści
        3. Dodanie powitania
        4. Obsługa błędów
        5. Testowanie API
      2. Klient
      3. Host
    5. Podsumowanie
  6. Rozdział 4. rchitektura przetwarzania
    1. Warstwa hostingu
    2. Warstwa potoku procedur obsługi komunikatów
      1. Obsługa tras
    3. Warstwa obsługi kontrolera
      1. Klasa bazowa ApiController
        1. Dołączanie parametru
        2. Konwersja na HttpResponseMessage
        3. Filtry
    4. Podsumowanie
  7. Rozdział 5. Aplikacja
    1. Dlaczego ewolucja?
      1. Bariery na drodze ewolucji
      2. Jaki jest koszt zmiany?
      3. Dlaczego po prostu nie wersja?
        1. Wersjonowanie oparte na treści
        2. Wersjonowanie typu danych
        3. Wersjonowanie w adresie URL
      4. Przystępujemy do pracy
    2. Cele aplikacji
      1. Cele
      2. Możliwości
    3. Model informacji
      1. Subdomeny
        1. Opis
        2. Kategoryzacja
        3. Stan bieżący
        4. Historia
      2. Powiązane zasoby
      3. Grupy atrybutów
      4. Kolekcje grup atrybutów
      5. Model informacji kontra typ danych
      6. Kolekcje zgłoszeń błędów
    4. Modele zasobów
      1. Zasób główny
      2. Zasoby wyszukiwania danych
      3. Kolekcja zasobów
      4. Zasób elementu
    5. Podsumowanie
  8. Rozdział 6. Projekt i wybór typu danych
    1. Samoopisywanie się
    2. Rodzaje kontraktów
    3. Typy danych
      1. Proste formaty
      2. Popularne formaty
      3. Nowe formaty
      4. Typy hipermediów
      5. Eksplozja typów danych
      6. Ogólne typy danych i profile
      7. Inne typy hipermediów
        1. Collection+Json
        2. Siren
    4. Typy relacji łączy
      1. Semantyka
      2. Zastąpienie osadzonych zasobów
      3. Warstwa pośrednia
      4. Dane odwołania
      5. Przepływ zdarzeń w aplikacji
      6. Składnia
      7. Doskonałe połączenie
    5. Opracowanie kontraktu nowego typu danych
      1. Wybór formatu
      2. Włączenie obsługi hipermediów
      3. Opcjonalne, obowiązkowe, pominięte, stosowalne
      4. Metadane osadzone kontra zewnętrzne
      5. Rozszerzalność
      6. Rejestracja typu danych
    6. Opracowanie nowych relacji łączy
      1. Standardowe relacje łącza
      2. Rozszerzenia relacji łączy
      3. Osadzone relacje łączy
      4. Rejestracja relacji łącza
    7. Typy danych w domenie monitorowania zgłoszeń błędów
      1. Lista zasobów
      2. Zasób elementu
      3. Zasób wykrycia
      4. Zasób wyszukiwania
    8. Podsumowanie
  9. Rozdział 7. Tworzenie API
    1. Projekt
    2. Pobranie kodu źródłowego
    3. Przygotowanie implementacji w stylu BDD
    4. Nawigacja po rozwiązaniu
    5. Pakiety i biblioteki
    6. Samohostowanie
    7. Modele i usługi
      1. Zgłoszenie błędu i magazyn dla zgłoszeń błędów
      2. Klasa IssueState
      3. Klasa IssuesState
      4. Klasa Link
      5. Klasa IssueStateFactory
      6. Klasa LinkFactory
      7. Klasa IssueLinkFactory
    8. Kryteria akceptacji
    9. Funkcjonalność: pobieranie zgłoszeń błędów
      1. Pobieranie zgłoszenia błędu
        1. Poznajemy testy
      2. Pobieranie otwartych i zamkniętych zgłoszeń błędów
      3. Pobieranie nieistniejącego zgłoszenia błędu
      4. Pobieranie wszystkich zgłoszeń błędów
      5. Pobieranie wszystkich zgłoszeń błędów jako danych w formacie Collection+Json
      6. Zasoby wyszukiwania
    10. Funkcjonalność: tworzenie zgłoszenia błędu
    11. Funkcjonalność: uaktualnianie zgłoszenia błędu
      1. Uaktualnianie zgłoszenia błędu
      2. Uaktualnianie nieistniejącego zgłoszenia błędu
    12. Funkcjonalność: usuwanie zgłoszenia błędu
      1. Usuwanie zgłoszenia błędu
      2. Usuwanie nieistniejącego zgłoszenia błędu
    13. Funkcjonalność: przetwarzanie zgłoszenia błędu
      1. Testy
      2. Implementacja
    14. Podsumowanie
  10. Rozdział 8. Usprawnianie API
    1. Kryteria akceptacji dla nowych funkcjonalności
    2. Implementacja obsługi buforowania danych wyjściowych
    3. Dodanie testów do sprawdzenia buforowania danych wyjściowych
    4. Implementacja ponownego pobierania buforowanych danych
    5. Implementacja warunkowych żądań GET do obsługi ponownego pobierania buforowanych danych
    6. Wykrywanie konfliktów
    7. Implementacja wykrywania konfliktów
    8. Audyt zmiany
    9. Implementacja audytu zmian za pomocą uwierzytelniania Hawk
    10. Monitorowanie
    11. Implementacja monitorowania
    12. Podsumowanie
  11. Rozdział 9. Tworzenie klienta
    1. Biblioteki klienta
      1. Biblioteki opakowujące
        1. Niezawodność
        2. Typy odpowiedzi
        3. Cykl życiowy
        4. Każdy ma swój styl
        5. Wrogie hipermedia
      2. Łącza jako funkcje
        1. Antywzorzec usługi
        2. Deserializacja łączy
        3. Oddzielenie żądania od odpowiedzi
        4. Łącza jako zakładki
    2. Przebieg działania aplikacji
      1. Warto wiedzieć
        1. Obsługa wszystkich wersji
        2. Zmiana jest nieunikniona
      2. Klienty z misją
      3. Stan klienta
    3. Podsumowanie
  12. Rozdział 10. Model programowania HTTP
    1. Komunikaty
    2. Nagłówki
    3. Zawartość komunikatu
      1. Wykorzystanie zawartości komunikatu
      2. Tworzenie zawartości komunikatu
        1. Wielkość zawartości i strumieniowanie
        2. Niestandardowe klasy zawartości
    4. Podsumowanie
  13. Rozdział 11. Hosting
    1. Hosting WWW
      1. Infrastruktura ASP.NET
        1. Aplikacje
        2. Moduły
        3. Procedury obsługi
      2. Routing ASP.NET
      3. Routing Web API
      4. Konfiguracja globalna
      5. Procedura obsługi Web API ASP.NET
    2. Samohostowanie
      1. Architektura WCF
      2. Klasa HttpSelfHostServer
      3. Klasa SelfHostConfiguration
      4. Rezerwacja adresu URL i kontrola dostępu
    3. Hosting Web API z użyciem OWIN i Katana
      1. OWIN
      2. Projekt Katana
      3. Konfiguracja Web API
      4. Oprogramowanie pośredniczące Web API
      5. Środowisko OWIN
    4. Hosting w pamięci
    5. Hosting Azure Service Bus
    6. Podsumowanie
  14. Rozdział 12. Kontrolery i routing
    1. Ogólny opis przepływu komunikatów HTTP
    2. Potok procedur obsługi komunikatów
      1. Dyspozytor
      2. HttpControllerDispatcher
      3. Wybór kontrolera
        1. Obsługa tras opartych na atrybutach
        2. Niestandardowa logika wyboru kontrolera
      4. Aktywacja kontrolera
    3. Potok kontrolera
      1. ApiController
      2. Model przetwarzania ApiController
        1. Wybór akcji
        2. Filtry
        3. Filtry uwierzytelniania
        4. Filtry autoryzacji
        5. Filtry akcji
        6. Filtry wyjątków
        7. Weryfikacja i dołączanie modelu
        8. Wywołanie akcji
    4. Podsumowanie
  15. Rozdział 13. Formatery i dołączanie modelu
    1. Waga modeli w ASP.NET Web API
    2. Jak działa dołączanie modelu?
    3. Wbudowane bindery modelu
      1. Implementacja ModelBindingParameterBinder
      2. Dostawcy wartości
      3. Bindery modelu
      4. Dołączanie modelu tylko dla adresu URI
      5. Implementacja FormatterParameterBinder
      6. Domyślny wybór HttpParameterBinding
    4. Sprawdzanie poprawności modelu
      1. Zastosowanie w modelu atrybutów adnotacji danych
      2. Przeglądanie wyników operacji sprawdzania poprawności
    5. Podsumowanie
  16. Rozdział 14. HttpClient
    1. Klasa HttpClient
      1. Cykl życiowy
      2. Opakowanie
      3. Wiele egzemplarzy
      4. Bezpieczeństwo wątków
      5. Metody pomocnicze
      6. Zagłębiamy się w kolejne warstwy
      7. Ukończone żądania nie zgłaszają wyjątków
      8. Zawartość jest wszystkim
      9. Przerwanie na żądanie
      10. Metoda SendAsync()
    2. Procedury obsługi komunikatów klienta
      1. Proxy dla procedur obsługi
      2. Nieprawdziwe procedury obsługi odpowiedzi
      3. Tworzenie wielokrotnego użytku procedur obsługi odpowiedzi
    3. Podsumowanie
  17. Rozdział 15. Bezpieczeństwo
    1. Zapewnienie bezpieczeństwa transportu
    2. Użycie TLS w ASP.NET Web API
      1. Użycie TLS z hostingiem IIS
      2. Użycie TLS z samohostowaniem
    3. Uwierzytelnianie
      1. Model oświadczeń
      2. Pobieranie i przypisywanie aktualnego zleceniodawcy
      3. Uwierzytelnienie oparte na transporcie
      4. Uwierzytelnienie serwera
      5. Uwierzytelnienie klienta
      6. Framework uwierzytelniania HTTP
      7. Implementacja uwierzytelniania opartego na HTTP
      8. Katana, czyli oprogramowanie pośredniczące do uwierzytelniania
      9. Aktywne i pasywne oprogramowanie pośredniczące odpowiedzialne za uwierzytelnianie
      10. Filtry uwierzytelniania w Web API
      11. Uwierzytelnianie oparte na tokenie
      12. Schemat uwierzytelniania Hawk
    4. Autoryzacja
      1. Egzekwowanie autoryzacji
      2. Współdzielenie zasobów między serwerami w różnych domenach
      3. Obsługa mechanizmu CORS na platformie ASP.NET Web API
    5. Podsumowanie
  18. Rozdział 16. OAuth 2.0, czyli framework uwierzytelniania
    1. Aplikacje klienta
    2. Uzyskanie dostępu do chronionych zasobów
    3. Pobranie tokenu dostępu
    4. Uprawnienia kodu autoryzacji
      1. Przykład przepływu kodu autoryzacji w OAuth 2.0
    5. Zakres
    6. Kanał oficjalny kontra kanał nieoficjalny
    7. Token refresh
    8. Serwer zasobów i serwer autoryzacji
    9. Przetwarzanie tokenów dostępu w ASP.NET Web API
    10. OAuth 2.0 i uwierzytelnianie
    11. Autoryzacja na podstawie zakresu
    12. Podsumowanie
  19. Rozdział 17. Testowanie
    1. Testy jednostkowe
      1. Frameworki testów jednostkowych
      2. Rozpoczęcie pracy z testami jednostkowymi w Visual Studio
      3. xUnit.NET
        1. Organizacja testu jednostkowego
        2. Klasa Assert
      4. Rola testów jednostkowych w programowaniu TDD
        1. Cykl czerwone i zielone
        2. Refaktoryzacja kodu
        3. Wstrzykiwanie zależności i imitacje
    2. Testy jednostkowe implementacji ASP.NET Web API
      1. Testy jednostkowe ApiController
        1. Testowanie metody Get()
        2. Testowanie metody Post()
        3. IHttpActionResult w Web API 2
      2. Testy jednostkowe MediaTypeFormatter
      3. Testy jednostkowe HttpMessageHandler
      4. Testy jednostkowe ActionFilterAttribute
    3. Testy jednostkowe tras
    4. Testy integracji w ASP.NET Web API
    5. Podsumowanie
  20. Dodatek A Typy danych
  21. Dodatek B Nagłówki HTTP
  22. Dodatek C Negocjacja treści
    1. Negocjacja proaktywna
    2. Negocjacja reaktywna
  23. Dodatek D Buforowanie w działaniu
  24. Dodatek E Przepływ zdarzeń podczas uwierzytelniania
  25. Dodatek F Specyfikacja typu danych dla application/issue+json
    1. Konwencje nazw
    2. Dokument zgłoszenia błędu
    3. Kwestie bezpieczeństwa
    4. Kwestie interoperacyjności
    5. Kwestie związane z IANA
  26. Dodatek G Certyfikaty i kryptografia klucza publicznego
    1. Cofnięcie certyfikatu
    2. Tworzenie testowych kluczy i certyfikatów
    3. O autorze
    4. Kolofon

Product information

  • Title: Nowoczesne API
  • Author(s): Glenn Block, Pablo Cibraro, Pedro Felix, Howard Dierking, Darrel Miller
  • Release date: June 2016
  • Publisher(s): Helion
  • ISBN: 9788328323919