Supabase som backend som tjeneste · leksjon

Integrasjon med eksterne tjenester

Lær mønstre for å koble Supabase-backenden til tredjeparts-API-er og -tjenester for å utvide funksjonaliteten i applikasjonen

Leksjon 1 av 312 trinn

Integrasjon med eksterne tjenester er en gratis leksjon i Supabase som backend som tjeneste på CoddyKit. Dette er leksjon 1 av 3. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Supabase som backend som tjeneste, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Supabase som backend som tjeneste inneholder totalt 3 leksjoner.

Hvorfor eksterne tjenester?

Applikasjonen Deres trenger ofte å gjøre mer enn bare å administrere data i Supabase. Tenk på å sende e-post, behandle betalinger eller integrere AI-verktøy.

Det er her integrasjon med eksterne tjenester kommer inn! Det gjør det mulig for Supabase-backend-en Deres å kommunisere med andre API-er og plattformer for å utvide funksjonaliteten i applikasjonen.

Vanlige integrasjonsbehov

Mange vanlige funksjoner i applikasjoner er avhengige av eksterne tjenester:

  • Betalingsløsninger: Stripe og PayPal for transaksjoner.
  • E-post/SMS: SendGrid og Twilio for varslinger.
  • AI/ML-API-er: OpenAI og Google Cloud AI for avanserte funksjoner.
  • Geolokasjon: Google Maps og Mapbox for karttjenester.
  • Analyse: Mixpanel og Segment for sporing av brukeradferd.

Supabase-rollen: Edge Functions

Selv om applikasjonen på klientsiden kan kalle eksterne API-er direkte, er Supabase Edge Functions det beste valget for sikre, backend-styrte integrasjoner.

Edge Functions fungerer som serverløs backend-logikk som kjører nær brukerne Deres. De kan sende HTTP-forespørsler til alle eksterne API-er uten å eksponere sensitiv informasjon direkte i koden på klientsiden.

Sende et API-kall med Deno

Supabase Edge Functions er bygget på Deno, som bruker standard-API-et fetch til nettverksforespørsler, på samme måte som nettlesere. Det gjør det enkelt å kommunisere med eksterne tjenester.

Flyten er slik: Klienten Deres kaller en Edge Function, som deretter sender en forespørsel til det eksterne API-et, behandler svaret og sender det tilbake til klienten.

Kodeeksempel: Hente eksterne data

Her er en enkel Edge Function som henter et tilfeldig «todo»-element fra et offentlig API (JSONPlaceholder). Legg merke til hvordan vi bruker Deno.serve som inngangspunkt for funksjonen.

import { serve } from 'https://deno.land/std@0.177.0/http/server.ts'

Deno.serve(async (req) => {
  const { name } = await req.json()

  try {
    const response = await fetch('https://jsonplaceholder.typicode.com/todos/1')
    const data = await response.json()

    return new Response(JSON.stringify({
      message: `Hello ${name}! Here's a todo: ${data.title}`,
    }), {
      headers: { 'Content-Type': 'application/json' },
      status: 200,
    })
  } catch (error) {
    return new Response(JSON.stringify({
      error: error.message,
    }), {
      headers: { 'Content-Type': 'application/json' },
      status: 500,
    })
  }
})

Kalle Edge Function

Når funksjonen er distribuert, kan applikasjonen på klientsiden kalle denne Edge Function ved hjelp av Supabase-klientbiblioteket. Funksjonsnavnet vil for eksempel være «fetch-todo».

Metoden invoke håndterer sending av data til funksjonen og mottak av svaret.

// Client-side JavaScript
async function getTodoFromEdgeFunction() {
  try {
    const { data, error } = await supabase.functions.invoke('fetch-todo', {
      body: { name: 'CoddyKit User' },
    })

    if (error) {
      console.error('Function error:', error)
    } else {
      console.log('Function response:', data)
    }
  } catch (err) {
    console.error('Invocation error:', err)
  }
}

// Call the function (e.g., on button click)
// getTodoFromEdgeFunction();

Sikre API-nøkler med Supabase Secrets

Det er en sikkerhetsrisiko å skrive API-nøkler direkte inn i koden til Edge Function. Hvis koden noen gang blir eksponert, er nøklene Deres kompromittert.

Supabase tilbyr Secrets for sikker lagring av miljøvariabler for Edge Functions. Disse er ikke en del av kodebasen og settes inn ved kjøring.

Bruke Secrets i Edge Functions

Først angir De en secret ved hjelp av Supabase CLI: supabase secrets set MY_EXTERNAL_API_KEY=your_key_here. Deretter får De tilgang til den i Edge Function via Deno.env.get('MY_EXTERNAL_API_KEY').

Dette holder de sensitive tilgangsopplysningene Deres sikre og utenfor versjonskontrollen.

import { serve } from 'https://deno.land/std@0.177.0/http/server.ts'

Deno.serve(async (req) => {
  // Access the secret environment variable
  const apiKey = Deno.env.get('MY_EXTERNAL_API_KEY') || 'NO_KEY_SET'

  // Example: Use the apiKey in a header for an external API call
  // const response = await fetch('https://api.example.com/data', {
  //   headers: { 'Authorization': `Bearer ${apiKey}` },
  // })

  return new Response(JSON.stringify({
    message: `API Key accessed: ${apiKey.substring(0, 5)}...`,
  }), {
    headers: { 'Content-Type': 'application/json' },
    status: 200,
  })
})

Robust håndtering av svar og feil

Når De integrerer eksterne tjenester, må De alltid være forberedt på både suksess og feil. Tolk API-svaret riktig (ofte som JSON), og håndter mulige feil.

  • Kontroller HTTP-status: Ikke alle 2xx-svar betyr suksess; noen API-er bruker 4xx for feil i forretningslogikken.
  • Try-Catch-blokker: Viktig ved nettverksfeil eller problemer med å tolke svar.
  • Meningsfulle feilmeldinger: Returner tydelige feilmeldinger til klienten uten å eksponere interne API-detaljer.

Beste praksis for integrasjoner

Følg disse rådene for å sikre robuste og skalerbare integrasjoner:

  • Begrensning av forespørsler: Respekter begrensningene til eksterne API-er for å unngå å bli blokkert.
  • Forsøk på nytt: Implementer eksponentiell tilbakeventing for midlertidige nettverksproblemer.
  • Tidsavbrudd: Angi rimelige tidsavbrudd for eksterne forespørsler for å hindre at de blir hengende.
  • Logging: Loggfør forespørsler og svar (spesielt feil) for feilsøking.
  • Idempotens: Utform funksjonene slik at de håndterer dupliserte forespørsler på en trygg måte, for eksempel ved betalinger.

Rask kontroll av integrasjon

De bygger en Edge Function for å sende en e-post ved hjelp av et eksternt e-post-API. De må inkludere API-nøkkelen til e-posttjenesten.

Oppsummering: Integrering av eksterne tjenester

De har lært hvordan De kan utvide funksjonaliteten i Supabase-applikasjonen ved å integrere eksterne API-er og tjenester.

  • Edge Functions egner seg godt for sikker kommunikasjon mellom backend og eksterne tjenester.
  • Bruk fetch i Deno Edge Functions for å sende HTTP-forespørsler.
  • Sikre alltid sensitive opplysninger, som API-nøkler, ved hjelp av Supabase Secrets.
  • Implementer robust feilhåndtering, og følg beste praksis for pålitelige integrasjoner.

Dette åpner for mange muligheter til å bygge kraftige applikasjoner med omfattende funksjonalitet!

Gratis å komme i gang

Lær deg Supabase som backend som tjeneste med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
11
Leksjoner
40

Ofte stilte spørsmål

Er leksjonen «Integrasjon med eksterne tjenester» gratis?

Ja – hele teksten i «Integrasjon med eksterne tjenester» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Supabase som backend som tjeneste-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Supabase som backend som tjeneste inneholder totalt 3 leksjoner.

Hva lærer jeg i «Integrasjon med eksterne tjenester»?

Lær mønstre for å koble Supabase-backenden til tredjeparts-API-er og -tjenester for å utvide funksjonaliteten i applikasjonen Du øver på Supabase som backend som tjeneste med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Supabase som backend som tjeneste?

Ingen tidligere erfaring er nødvendig. Supabase som backend som tjeneste på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 1 av 3.

Hvor lang tid tar leksjonen «Integrasjon med eksterne tjenester»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Supabase som backend som tjeneste-leksjonen?

Ja. Alle Supabase som backend som tjeneste-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Integrasjon med eksterne tjenester
  2. Jobbkøer med Supabase og workers
  3. Planlegging av gjentakende jobber med pg_cron
← Tilbake til Supabase som backend som tjeneste