Bird
Raised Fist0
Supabasecloud~5 mins

Calling external APIs from Edge Functions in Supabase - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is an Edge Function in Supabase?
An Edge Function is a small piece of code that runs close to the user, on servers near their location. It helps respond quickly and can call external APIs or perform tasks without waiting for a central server.
Click to reveal answer
beginner
Why call external APIs from Edge Functions?
Calling external APIs from Edge Functions lets your app get data or services from other places quickly and securely, without slowing down the user experience.
Click to reveal answer
beginner
What method is commonly used to call external APIs in Edge Functions?
The fetch() method is used to send requests to external APIs and get responses. It works like asking a friend for information and waiting for their reply.
Click to reveal answer
intermediate
How do you handle errors when calling external APIs in Edge Functions?
You check if the response is successful. If not, you handle the error by showing a message or trying again. This keeps your app from crashing and helps users understand what happened.
Click to reveal answer
intermediate
What is a best practice when calling external APIs from Edge Functions?
Keep the calls fast and simple, avoid exposing secret keys in the code, and handle errors gracefully. This ensures your app stays secure and responsive.
Click to reveal answer
What does an Edge Function do in Supabase?
AStores large files in the cloud
BRuns code close to the user for faster response
CCreates database tables automatically
DManages user passwords
Which JavaScript method is used to call external APIs in Edge Functions?
Afetch()
Bconsole.log()
CsetTimeout()
Dalert()
What should you avoid exposing in your Edge Function code when calling external APIs?
ASecret API keys
BVariable names
CComments
DUser interface elements
If an external API call fails in an Edge Function, what is a good practice?
AIgnore the error and continue
BCrash the function immediately
CHandle the error and inform the user
DDelete the function
Why is calling external APIs from Edge Functions beneficial?
AIt slows down the app
BIt makes the app less secure
CIt removes the need for a database
DIt improves speed and user experience
Explain how you would call an external API from a Supabase Edge Function and handle possible errors.
Think about sending a request, checking the reply, and managing failures.
You got /4 concepts.
    Describe best practices to keep your Edge Function secure when calling external APIs.
    Consider what information should stay private and how to keep the function efficient.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of using fetch in Supabase Edge Functions when calling external APIs?
      easy
      A. To create user interface components
      B. To store data permanently in Supabase database
      C. To run SQL queries inside the Edge Function
      D. To send requests and receive data from external services

      Solution

      1. Step 1: Understand the role of fetch in Edge Functions

        fetch is used to send HTTP requests to external APIs and get responses back.
      2. Step 2: Identify what fetch does not do

        It does not store data permanently or create UI components; it only communicates with external services.
      3. Final Answer:

        To send requests and receive data from external services -> Option D
      4. Quick Check:

        fetch calls external APIs = C [OK]
      Hint: Remember: fetch is for talking to outside services [OK]
      Common Mistakes:
      • Thinking fetch stores data permanently
      • Confusing fetch with database queries
      • Assuming fetch creates UI elements
      2. Which of the following is the correct syntax to call an external API using fetch inside a Supabase Edge Function?
      easy
      A. const response = fetch('https://api.example.com/data').then(res => res.json())
      B. const response = fetch.get('https://api.example.com/data')
      C. const response = fetch('https://api.example.com/data')
      D. const response = fetch('https://api.example.com/data').json()

      Solution

      1. Step 1: Recall the correct usage of fetch

        fetch returns a promise; to get JSON data, you call then(res => res.json()).
      2. Step 2: Check each option for syntax correctness

        const response = fetch('https://api.example.com/data') misses handling the promise; B uses invalid method; D incorrectly calls json() directly on fetch.
      3. Final Answer:

        const response = fetch('https://api.example.com/data').then(res => res.json()) -> Option A
      4. Quick Check:

        fetch + then(res.json()) = A [OK]
      Hint: Always handle fetch with then() or await for JSON [OK]
      Common Mistakes:
      • Calling json() directly on fetch without then or await
      • Using fetch.get which does not exist
      • Ignoring the promise returned by fetch
      3. Consider this Edge Function code snippet:
      export async function handler() {
        const response = await fetch('https://api.example.com/data');
        const data = await response.json();
        return new Response(JSON.stringify({ result: data.value }), { status: 200 });
      }
      If the external API returns { "value": 42 }, what will the Edge Function return?
      medium
      A. An error because data.value is undefined
      B. A response with body '{"result":42}' and status 200
      C. A response with body '42' and status 404
      D. A response with body '{"value":42}' and status 200

      Solution

      1. Step 1: Understand the API response and parsing

        The API returns JSON {"value": 42}, which is parsed into data object with data.value = 42.
      2. Step 2: Check the returned response from the Edge Function

        The function returns JSON string with key "result" and value data.value (42), status 200.
      3. Final Answer:

        A response with body '{"result":42}' and status 200 -> Option B
      4. Quick Check:

        API value 42 mapped to result key = D [OK]
      Hint: Map API data correctly before returning JSON [OK]
      Common Mistakes:
      • Returning original API JSON without mapping
      • Confusing status codes
      • Assuming data.value is undefined
      4. You wrote this Edge Function code to call an external API:
      export async function handler() {
        const response = fetch('https://api.example.com/data');
        const data = await response.json();
        return new Response(JSON.stringify(data), { status: 200 });
      }
      What is the main error in this code?
      medium
      A. Missing await before fetch causing response to be a Promise
      B. Using await on response.json() is incorrect
      C. Response constructor cannot take JSON string
      D. The function should not return a Response object

      Solution

      1. Step 1: Identify how fetch is called

        fetch returns a Promise, so it must be awaited to get the response object.
      2. Step 2: Check usage of await on response.json()

        Awaiting response.json() is correct; the error is missing await on fetch.
      3. Final Answer:

        Missing await before fetch causing response to be a Promise -> Option A
      4. Quick Check:

        Missing await before fetch causing response to be a Promise = B [OK]
      Hint: Always await fetch before calling response methods [OK]
      Common Mistakes:
      • Not awaiting fetch before response.json()
      • Thinking response.json() does not need await
      • Misunderstanding Response constructor usage
      5. You want to call two different external APIs sequentially inside a Supabase Edge Function and combine their results before returning. Which code snippet correctly does this?
      hard
      A. const [res1, res2] = await Promise.all([ fetch('https://api1.com/data'), fetch('https://api2.com/data') ]); const data1 = await res1.json(); const data2 = await res2.json(); return new Response(JSON.stringify({ first: data1, second: data2 }), { status: 200 });
      B. const res1 = fetch('https://api1.com/data'); const data1 = await res1.json(); const res2 = fetch('https://api2.com/data'); const data2 = await res2.json(); return new Response(JSON.stringify({ first: data1, second: data2 }), { status: 200 });
      C. const res1 = await fetch('https://api1.com/data'); const data1 = await res1.json(); const res2 = await fetch('https://api2.com/data'); const data2 = await res2.json(); return new Response(JSON.stringify({ first: data1, second: data2 }), { status: 200 });
      D. const data1 = fetch('https://api1.com/data').json(); const data2 = fetch('https://api2.com/data').json(); return new Response(JSON.stringify({ first: data1, second: data2 }), { status: 200 });

      Solution

      1. Step 1: Understand sequential API calls

        To call APIs one after another, await each fetch and parse before next call.
      2. Step 2: Check each option for correct async handling

        const res1 = await fetch('https://api1.com/data'); const data1 = await res1.json(); const res2 = await fetch('https://api2.com/data'); const data2 = await res2.json(); return new Response(JSON.stringify({ first: data1, second: data2 }), { status: 200 }); correctly awaits each fetch and json parsing sequentially. const res1 = fetch('https://api1.com/data'); const data1 = await res1.json(); const res2 = fetch('https://api2.com/data'); const data2 = await res2.json(); return new Response(JSON.stringify({ first: data1, second: data2 }), { status: 200 }); misses await on fetch. const [res1, res2] = await Promise.all([ fetch('https://api1.com/data'), fetch('https://api2.com/data') ]); const data1 = await res1.json(); const data2 = await res2.json(); return new Response(JSON.stringify({ first: data1, second: data2 }), { status: 200 }); uses parallel calls, not sequential. const data1 = fetch('https://api1.com/data').json(); const data2 = fetch('https://api2.com/data').json(); return new Response(JSON.stringify({ first: data1, second: data2 }), { status: 200 }); incorrectly calls json() directly.
      3. Final Answer:

        const res1 = await fetch('https://api1.com/data');\nconst data1 = await res1.json();\nconst res2 = await fetch('https://api2.com/data');\nconst data2 = await res2.json();\nreturn new Response(JSON.stringify({ first: data1, second: data2 }), { status: 200 }); -> Option C
      4. Quick Check:

        Sequential await fetch + json = A [OK]
      Hint: Await each fetch and json call in order for sequential calls [OK]
      Common Mistakes:
      • Not awaiting fetch before json()
      • Calling json() directly on fetch
      • Mixing parallel and sequential calls incorrectly
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard