0Pricing
AWS Solutions Architect · Lekcja

REST API a HTTP API i WebSocket API

Poznają kompromisy między REST API (bogate funkcje), HTTP API (niskie opóźnienia i koszty) oraz WebSocket API (dwukierunkowość) i dokonają właściwego wyboru.

REST API a HTTP API i WebSocket API to bezpłatna lekcja AWS Solutions Architect na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej AWS Solutions Architect, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs AWS Solutions Architect zawiera 4 lekcji w sumie.

Dlaczego istnieje API Gateway

Amazon API Gateway to w pełni zarządzana usługa, która umożliwia tworzenie, publikowanie, zabezpieczanie i monitorowanie interfejsów API w dowolnej skali. Pełni funkcję bramy wejściowej dla usług backendowych — funkcji Lambda, instancji EC2, backendów HTTP lub dowolnej usługi AWS. API Gateway obsługuje zarządzanie ruchem, autoryzację, ograniczanie przepustowości, monitorowanie i wersjonowanie API, dzięki czemu backend może koncentrować się na logice biznesowej, a nie na infrastrukturze API.

REST API: tradycyjne API z bogatym zestawem funkcji

REST API (pierwotny produkt API Gateway) zapewnia najszerszy zestaw funkcji: transformację żądań i odpowiedzi za pomocą szablonów mapowania, ograniczanie przepustowości dla poszczególnych metod, plany użycia z kluczami API, buforowanie odpowiedzi, integrację z WAF, śledzenie za pomocą X-Ray, zasady zasobów oraz wzajemne uwierzytelnianie TLS z użyciem certyfikatów klienta. REST API obsługuje wszystkie typy integracji: Lambda, HTTP, AWS service, Mock i Lambda Proxy. REST API należy użyć, gdy potrzebne są zaawansowane funkcje, takie jak transformacja, buforowanie lub plany użycia.

HTTP API: alternatywa o małych opóźnieniach i niskim koszcie

HTTP API zaprojektowano jako prostszą, tańszą i szybszą alternatywę dla REST API. Obsługuje wyłącznie integracje Lambda proxy i HTTP proxy — bez integracji z usługami AWS i bez Mock. Najważniejsze zalety to: koszt do 70% niższy niż w przypadku REST API, mniejsze opóźnienia, wbudowana natywna autoryzacja JWT OIDC i OAuth 2.0 (w typowych scenariuszach uwierzytelniania nie jest potrzebny autoryzator Lambda) oraz automatyczne wdrażanie. Jeśli nie potrzebują Państwo buforowania, planów użycia ani transformacji żądań i odpowiedzi, lepszym wyborem będzie HTTP API.

# Create a simple HTTP API
aws apigatewayv2 create-api \
  --name 'MyHttpAPI' \
  --protocol-type HTTP \
  --target 'arn:aws:lambda:us-east-1:123456789012:function:MyLambda'

WebSocket API: dwukierunkowa komunikacja w czasie rzeczywistym

WebSocket API utrzymuje trwałe, dwukierunkowe połączenia między klientami a serwerem. W przeciwieństwie do protokołu HTTP (model żądanie–odpowiedź) WebSocket umożliwia serwerowi wysyłanie wiadomości do połączonych klientów w dowolnym momencie, bez konieczności odpytywania serwera przez klienta. API Gateway zarządza połączeniami WebSocket i kieruje wiadomości do funkcji Lambda na podstawie wyrażeń routingu. WebSocket API należy używać w aplikacjach działających w czasie rzeczywistym, takich jak czaty, pulpity na żywo, wspólna edycja, gry i notowania giełdowe.

Trasy WebSocket i zarządzanie połączeniami

WebSocket API ma trzy wbudowane trasy: $connect (uruchamianą, gdy klient otwiera połączenie), $disconnect (uruchamianą, gdy połączenie zostaje zamknięte) oraz $default (przechwytującą niedopasowane wiadomości). Można dodawać niestandardowe trasy, takie jak sendmessage, i mapować je na konkretne funkcje Lambda. Za pomocą interfejsu zarządzania @connections można wysyłać wiadomości z funkcji Lambda do połączonych klientów, używając identyfikatora połączenia klienta.

# Send a message to a specific WebSocket client from Lambda
import boto3

gw_client = boto3.client(
    'apigatewaymanagementapi',
    endpoint_url='https://abc123.execute-api.us-east-1.amazonaws.com/prod'
)

def lambda_handler(event, context):
    connection_id = event['requestContext']['connectionId']
    gw_client.post_to_connection(
        Data='{"type": "message", "text": "Hello!"}',
        ConnectionId=connection_id
    )

Porównanie funkcji: REST vs HTTP vs WebSocket

Najważniejsze różnice w skrócie:

  • REST API: pełny zestaw funkcji (buforowanie, plany użycia, transformacje, WAF), wyższy koszt, obsługa wszystkich typów integracji
  • HTTP API: tylko proxy Lambda/HTTP, o 70% niższy koszt, wbudowane uwierzytelnianie JWT, mniejsze opóźnienia, brak buforowania i planów użycia
  • WebSocket API: trwałe połączenia dwukierunkowe, możliwość wysyłania danych przez serwer, rozliczanie za milion wiadomości i minutę czasu połączenia

Na egzaminie SAA-C03: pytania dotyczące HTTP bez funkcji czasu rzeczywistego ani zaawansowanych funkcji → HTTP API. Wysyłanie danych przez serwer w czasie rzeczywistym → WebSocket. Złożone funkcje API → REST API.

Etapy i wdrożenia

Interfejsy API API Gateway są wdrażane na etapach (np. dev, staging, prod). Każdy etap ma własny adres URL, ustawienia ograniczania przepustowości i może wskazywać konkretną migawkę wdrożenia. Używaj zmiennych etapu (podobnych do zmiennych środowiskowych), aby parametryzować endpointy backendu dla poszczególnych etapów — na przykład kierować etap dev do aliasu Lambda dla środowiska deweloperskiego, a etap prod do aliasu produkcyjnego, bez duplikowania konfiguracji API.

# REST API: create a deployment and stage
aws apigateway create-deployment \
  --rest-api-id 'abc123' \
  --stage-name 'prod'

# Set stage variable
aws apigateway update-stage \
  --rest-api-id 'abc123' \
  --stage-name 'prod' \
  --patch-operations 'op=replace,path=/variables/lambdaAlias,value=prod'

Niestandardowe nazwy domen i mapowania ścieżek bazowych

Domyślnie adresy URL API Gateway zawierają identyfikator API (np. abc123.execute-api.us-east-1.amazonaws.com). W środowisku produkcyjnym należy utworzyć niestandardową nazwę domeny zabezpieczoną certyfikatem ACM i zmapować ją na API oraz etap. Używaj mapowań ścieżek bazowych, aby hostować wiele interfejsów API w jednej domenie (np. api.example.com/orders → API Orders, api.example.com/users → API Users). Nniestandardowe nazwy domen wymagają rekordu aliasu Route 53 wskazującego endpoint API Gateway.

Interfejsy API zoptymalizowane brzegowo, regionalne i prywatne

REST API można wdrażać z użyciem trzech typów endpointów: Edge-Optimised (warstwa CloudFront zapewniająca globalną dystrybucję, ustawienie domyślne), Regional (bez CloudFront, mniejsze opóźnienia dla klientów z tego samego regionu lub w przypadku dodania własnego CloudFront) oraz Private (dostępne wyłącznie z poziomu VPC za pośrednictwem interfejsowego endpointu VPC, przeznaczone dla wewnętrznych mikrousług). HTTP API obsługuje Edge-Optimised i Regional. WebSocket API obsługuje Regional i Private. Wybierz Regional dla interfejsów API używanych z tego samego regionu lub gdy korzystasz z niestandardowych dystrybucji CloudFront.

Wdrożenia canary z API Gateway

REST API usługi API Gateway obsługuje wdrożenia canary na etapie. Można kierować określony procent ruchu do wdrożenia canary (nowej wersji), a pozostałą część do wdrożenia produkcyjnego. Należy monitorować wskaźniki błędów i opóźnienia w wersji canary; jeśli działanie jest stabilne, można zwiększyć jej udział do 100%. W razie problemów można wycofać zmianę, ustawiając wagę canary na 0. Przypomina to routowanie oparte na wagach aliasów Lambda i umożliwia bezpieczne, stopniowe aktualizowanie API bez przełączania środowisk blue/green.

Wybór właściwego typu API na egzaminie

Słowa kluczowe w pytaniach egzaminu SAA-C03 pomagające zidentyfikować typ API: „ekonomiczne, proste API” → HTTP API; „dwukierunkowa komunikacja w czasie rzeczywistym”, „wysyłanie danych przez serwer” lub „czat” → WebSocket API; „transformacja żądań”, „plany użycia”, „ograniczanie przepustowości za pomocą klucza API”, „buforowanie odpowiedzi” → REST API. Jeśli pytanie dotyczy po prostu „udostępnienia funkcji Lambda jako endpointu HTTP przy niskim koszcie”, właściwym wyborem będzie HTTP API. Gdy pytanie obejmuje złożone funkcje zarządzania API lub partnerów, zwykle poprawną odpowiedzią jest REST API.

Szybkie sprawdzenie

Sprawdź swoją znajomość zagadnień AWS Solutions Architect (SAA-C03) omówionych w tej lekcji.

Podsumowanie lekcji

W tej lekcji poznali Państwo następujące zagadnienia: REST API zapewnia pełny zestaw funkcji API Gateway (buforowanie, transformacje, plany użycia, WAF) przy wyższym koszcie; HTTP API jest o 70% tańsze, ma wbudowane uwierzytelnianie JWT i mniejsze opóźnienia, dzięki czemu idealnie nadaje się do scenariuszy z proxy Lambda/HTTP bez zaawansowanych funkcji; natomiast WebSocket API umożliwia komunikację w czasie rzeczywistym z wysyłaniem danych przez serwer za pośrednictwem trwałych połączeń, co sprawdza się w czatach, grach i aplikacjach z danymi na żywo. W następnej części omówimy integracje API Gateway z Lambda, backendami HTTP i odpowiedziami Mock.

Często zadawane pytania

Czy lekcja „REST API a HTTP API i WebSocket API” jest bezpłatna?

Tak — pełny tekst „REST API a HTTP API i WebSocket API” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu AWS Solutions Architect, przejdź na CoddyKit PRO. Kurs AWS Solutions Architect zawiera 4 lekcji w sumie.

Co nauczysz się w „REST API a HTTP API i WebSocket API”?

Poznają kompromisy między REST API (bogate funkcje), HTTP API (niskie opóźnienia i koszty) oraz WebSocket API (dwukierunkowość) i dokonają właściwego wyboru. Ćwiczysz AWS Solutions Architect z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć AWS Solutions Architect?

Nie wymagamy żadnego doświadczenia. AWS Solutions Architect w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.

Ile czasu zajmuje lekcja „REST API a HTTP API i WebSocket API”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji AWS Solutions Architect?

Tak. Każda lekcja AWS Solutions Architect zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. REST API a HTTP API i WebSocket API
  2. Integracje: Lambda, HTTP i Mock
  3. Autoryzacja: IAM, autoryzatory Lambda i Cognito
  4. Ograniczanie, buforowanie i plany użycia
← Powrót do AWS Solutions Architect