AWS Solutions Architect · Oppitunti

REST API, HTTP API ja WebSocket API

Ymmärrätte REST API:n (monipuolinen), HTTP API:n (pieni viive ja alhaiset kustannukset) ja WebSocket API:n (kaksisuuntainen) kompromissit ja valitsette sopivan vaihtoehdon.

Oppitunti 1/413 vaihetta

REST API, HTTP API ja WebSocket API on ilmainen AWS Solutions Architect-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu AWS Solutions Architect-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. AWS Solutions Architect-kurssilla on yhteensä 4 oppituntia.

Miksi API Gateway on olemassa

Amazon API Gateway on täysin hallinnoitu palvelu, jonka avulla voitte luoda, julkaista, suojata ja valvoa minkä tahansa mittakaavan rajapintoja. Se toimii taustapalvelujenne etupihana – taustapalveluina voivat olla Lambda-funktiot, EC2-instanssit, HTTP-taustajärjestelmät tai mikä tahansa AWS-palvelu. API Gateway huolehtii liikenteenhallinnasta, valtuutuksesta, liikenteen rajoittamisesta, valvonnasta ja API-versioinnista, joten taustajärjestelmänne voi keskittyä liiketoimintalogiikkaan API-infrastruktuurin sijaan.

REST API: monipuolinen perinteinen rajapinta

REST API (alkuperäinen API Gateway -tuote) tarjoaa laajimman ominaisuusvalikoiman: pyyntöjen ja vastausten muunnokset kuvausmallien avulla, menetelmäkohtaisen liikenteen rajoittamisen, API-avaimia käyttävät käyttösuunnitelmat, vastausten välimuistin, WAF-integraation, X-Ray-jäljityksen, resurssikäytännöt ja asiakasvarmenteisiin perustuvan keskinäisen TLS:n. REST API:t tukevat kaikkia integraatiotyyppejä: Lambda, HTTP, AWS-palvelu, Mock ja Lambda Proxy. Käyttäkää REST API:a, kun tarvitsette edistyneitä ominaisuuksia, kuten muunnoksia, välimuistia tai käyttösuunnitelmia.

HTTP API: pienen viiveen ja kustannusten vaihtoehto

HTTP API suunniteltiin REST API:a yksinkertaisemmaksi, edullisemmaksi ja nopeammaksi vaihtoehdoksi. Se tukee vain Lambda proxy - ja HTTP proxy -integraatioita – ei AWS-palveluintegraatioita eikä Mock-integraatiota. Keskeisiä etuja ovat enintään 70 % pienemmät kustannukset kuin REST API:ssa, pienempi viive, natiivisti sisäänrakennettu OIDC- ja OAuth 2.0 -pohjainen JWT-valtuutus (yleisissä todennustilanteissa ei tarvita Lambda-valtuuttajaa) sekä automaattinen käyttöönotto. Jos ette tarvitse välimuistia, käyttösuunnitelmia tai pyyntöjen ja vastausten muunnoksia, HTTP API on parempi valinta.

# 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: kaksisuuntainen reaaliaikainen viestintä

WebSocket API ylläpitää pysyviä, kaksisuuntaisia yhteyksiä asiakkaiden ja palvelimen välillä. Toisin kuin HTTP:ssä (pyyntö–vastaus), WebSocketin avulla palvelin voi työntää viestejä yhdistettyihin asiakkaisiin milloin tahansa ilman, että asiakas kyselee niitä. API Gateway hallinnoi WebSocket-yhteyksiä ja reitittää viestit Lambda-funktioihin reittilausekkeiden perusteella. Käyttäkää WebSocket API:a reaaliaikaisissa sovelluksissa, kuten chat-sovelluksissa, reaaliaikaisissa koontinäytöissä, yhteismuokkauksessa, peleissä ja osakekursseissa.

WebSocket-reitit ja yhteyksien hallinta

WebSocket API:ssa on kolme sisäänrakennettua reittiä: $connect (käynnistyy, kun asiakas avaa yhteyden), $disconnect (käynnistyy, kun yhteys suljetaan) ja $default (käsittelee viestit, joille ei löydy täsmäävää reittiä). Voitte lisätä mukautettuja reittejä, kuten sendmessage-reitin, joka yhdistetään tiettyyn Lambda-funktioon. Käyttäkää @connections-hallinta-API:a viestien lähettämiseen takaisin yhdistetyille asiakkaille Lambda-funktiosta asiakkaan yhteystunnuksen avulla.

# 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
    )

Ominaisuuksien vertailu: REST vs HTTP vs WebSocket

Keskeiset erot lyhyesti:

  • REST API: täydet ominaisuudet (välimuisti, käyttösuunnitelmat, muunnokset, WAF), suuremmat kustannukset, tukee kaikkia integraatiotyyppejä
  • HTTP API: vain Lambda-/HTTP-proxy, 70 % edullisempi, sisäänrakennettu JWT-todennus, pienempi viive, ei välimuistia tai käyttösuunnitelmia
  • WebSocket API: pysyvät kaksisuuntaiset yhteydet, tukee palvelimen lähettämiä viestejä, veloitus perustuu miljoonaan viestiin ja yhteysajan minuutteihin

SAA-C03-kokeessa: HTTP-kysymykset ilman reaaliaikaisuutta tai edistyneitä ominaisuuksia → HTTP API. Reaaliaikainen palvelimen lähettämä sisältö → WebSocket. Monimutkaiset API-ominaisuudet → REST API.

Vaiheet ja käyttöönotot

API Gateway -rajapinnat otetaan käyttöön vaiheisiin (esimerkiksi dev, staging, prod). Jokaisella vaiheella on oma URL-osoitteensa ja liikenteen rajoitusasetuksensa, ja se voi viitata tiettyyn käyttöönoton tilannevedokseen. Käyttäkää vaihemuuttujia (ympäristömuuttujien tapaan) taustapäätepisteiden parametrisoimiseen vaihekohtaisesti – esimerkiksi ohjatkaa dev-vaihe dev-Lambda-aliakseen ja prod-vaihe prod-aliakseen ilman API-määrityksen monistamista.

# 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'

Mukautetut toimialuenimet ja peruspolkujen määritykset

API Gatewayn URL-osoitteet sisältävät oletusarvoisesti API-tunnuksen (esimerkiksi abc123.execute-api.us-east-1.amazonaws.com). Tuotantokäyttöä varten luokaa mukautettu toimialuenimi, jota tukee ACM-varmenne, ja yhdistäkää se API:inne ja vaiheeseenne. Käyttäkää peruspolkujen määrityksiä useiden API:en isännöimiseen yhden toimialueen alla (esimerkiksi api.example.com/orders → Orders API, api.example.com/users → Users API). Mukautetut toimialuenimet edellyttävät Route 53 -alias-tietuetta, joka osoittaa API Gateway -päätepisteeseen.

Reunan optimoimat, alueelliset ja yksityiset API:t

REST API:t voidaan ottaa käyttöön kolmella päätepistetyypillä: Edge-Optimised (CloudFront-käyttöliittymä maailmanlaajuista jakelua varten, oletus), Regional (ei CloudFrontia, pienempi viive saman alueen asiakkaille tai omaa CloudFrontia käytettäessä) ja Private (käytettävissä vain VPC:n sisältä interface VPC endpointin kautta, sisäisiä mikropalveluja varten). HTTP API:t tukevat Edge-Optimised- ja Regional-tyyppejä. WebSocket API:t tukevat Regional- ja Private-tyyppejä. Valitkaa Regional API:ille, joita käytetään samalta alueelta, tai kun käytätte mukautettuja CloudFront-jakeluja.

Canary-käyttöönotot API Gatewaylla

API Gatewayn REST API:t tukevat canary-käyttöönottoja vaiheessa. Voitte ohjata tietyn prosenttiosuuden liikenteestä canary-käyttöönottoon (uuteen versioon) ja lopun liikenteen tuotantokäyttöönottoon. Seuratkaa canaryn virhetasoja ja viivettä; jos kaikki toimii vakaasti, siirtäkää se kokonaan käyttöön. Jos ilmenee ongelmia, palauttakaa aiempi versio asettamalla canaryn painoksi 0. Tämä vastaa Lambda-aliaksen painotettua reititystä ja mahdollistaa API:n turvalliset, vaiheittaiset päivitykset ilman blue/green-ympäristöjen vaihtamista.

Sopivan API-tyypin valitseminen kokeessa

SAA-C03-kokeen avainsanat API-tyypin tunnistamiseen: ”kustannustehokas yksinkertainen API” → HTTP API; ”reaaliaikainen kaksisuuntainen viestintä”, ”palvelimen lähettämät viestit” tai ”chat” → WebSocket API; ”pyynnön muunnos”, ”käyttösuunnitelmat”, ”API-avainten liikenteen rajoitus”, ”vastausten välimuisti” → REST API. Kun kysymys koskee yksinkertaisesti Lambdan tarjoamista HTTP-päätepisteenä pienin kustannuksin, HTTP API on oikea valinta. Kun kysymykseen liittyy monimutkaisia API-hallinnan ominaisuuksia tai kumppaneita, REST API on yleensä oikea valinta.

Pikatarkistus

Testatkaa tämän oppitunnin AWS Solutions Architect (SAA-C03) -käsitteiden ymmärtämistänne.

Oppitunnin kertaus

Tässä oppitunnissa opitte, että REST API tarjoaa API Gatewayn täydet ominaisuudet (välimuisti, muunnokset, käyttösuunnitelmat, WAF) suuremmilla kustannuksilla, HTTP API on 70 % edullisempi ja tarjoaa sisäänrakennetun JWT-todennuksen sekä pienemmän viiveen, joten se sopii Lambda-/HTTP-proxy-tilanteisiin ilman edistyneitä ominaisuuksia, ja WebSocket API mahdollistaa palvelimen lähettämät reaaliaikaiset viestit pysyvien yhteyksien kautta chat-, peli- ja reaaliaikaisissa datasovelluksissa. Seuraavaksi tutustumme API Gatewayn Lambda-, HTTP-taustajärjestelmä- ja Mock-vastausintegraatioihin.

Aloita maksutta

Opi AWS Solutions Architect tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
30
Oppitunnit
120

Usein kysytyt kysymykset

Onko oppitunti ”REST API, HTTP API ja WebSocket API” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa AWS Solutions Architect-oppimispolun 3 oppituntia, myös oppitunnin “REST API, HTTP API ja WebSocket API”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. AWS Solutions Architect-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”REST API, HTTP API ja WebSocket API”?

Ymmärrätte REST API:n (monipuolinen), HTTP API:n (pieni viive ja alhaiset kustannukset) ja WebSocket API:n (kaksisuuntainen) kompromissit ja valitsette sopivan vaihtoehdon. Harjoittelet AWS Solutions Architect-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni AWS Solutions Architect-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin AWS Solutions Architect-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.

Kuinka kauan ”REST API, HTTP API ja WebSocket API”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä AWS Solutions Architect-oppitunnilla?

Kyllä. Jokainen AWS Solutions Architect-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. REST API, HTTP API ja WebSocket API
  2. Integraatiot: Lambda, HTTP ja Mock
  3. Valtuutus: IAM, Lambda Authorizers ja Cognito
  4. Rajoittaminen, välimuisti ja käyttö­suunnitelmat
← Takaisin: AWS Solutions Architect