Supabase Edge Functions: Vocabulary for Serverless Deno Development (англійською)
Освоєння англійських термінів для Supabase Edge Functions — часу виконання Deno, CORS, тригерів бази даних, секретів і розгортання — для розробників сервера ESL.
Supabase Edge Functions є серверними функціями TypeScript, які працюють у глобальній мережі Deno Deploy. Вони запускаються за допомогою запитів HTTP, подій бази даних або запланованих завдань, і вони мають безпосередній доступ до бази даних, сховища даних і служб автентифікації вашого проекту Supabase. Знання слів, які використано у цій статті, допоможе вам прочитати документацію з Supabase, написати чіткі повідомлення про зміни у межах функцій і обговорити безсерверну архітектуру англійською мовою.
Основні поняття
** Edge Function ** — невелика, безстатева функція на стороні сервера, розгорнута в глобальній мережі Supabase; вона обробляє одну кінцеву точку HTTP або відповідає на подію бази даних Supabase.
- “Ми пересунули обробник webhook платежу до Edge Function, щоб він працював поруч з серверами постачальника платіжних послуг і відповідав менше ніж за 50 мс.” *
Deno runtime — JavaScript і TypeScript runtime, що виконує Supabase Edge Functions; на відміну від Node.js, Deno використовує ES модуль імпорту з URL і має вбудовану модель дозволів.
“Оскільки середовище виконання Deno використовує імпорт URL, ми імпортуємо клієнта Supabase безпосередньо з esm.sh, а не виконуємо npm install.”
** без стану ** — описує функцію, яка не зберігає пам’ ять або стан між викликами; кожен виклик функції Edge починається з нуля, без відомостей про попередні запити.
“Крайові функції не мають стану, отже дані сеансу зберігаються у базі даних Supabase, а не у змінній рівня модуля.”
HTTP і CORS
** Заголовки CORS ** — заголовки відповідей HTTP, які повідомляють переглядачеві, з яких джерел можна викликати вашу Edge Function з JavaScript на стороні клієнта; відсутність заголовків CORS призведе до блокування відповіді переглядача.
“Ми додали заголовки CORS до відповіді функції, щоб програма React, що працює на localhost:3000, могла викликати Edge Function під час розробки.”
** запит на перевірку перед відправкою ** — автоматичний запит OPTIONS, який переглядач надсилає перед отриманням даних з різних джерел, щоб перевірити, чи дозволяє сервер виконати фактичний запит; Edge Functions має обробляти цей запит і відповідати за допомогою правильних заголовків CORS.
- “Функція беззвучно завершувала роботу у виробничому режимі, оскільки не обробляла запит на перевірку перед завантаженням, що призвело до скасування переглядачем фактичного завантаження.” *
** invoke () ** — метод на клієнті Supabase, який викликає Edge Function за назвою з коду на стороні клієнта або сервера, передаючи тіло і додатковий заголовок.
“Ми викликаємо supabase.functions.invoke(‘send-email’, options) на клієнті, тому користувачеві ніколи не потрібно знати адресу URL функції.”
Тригери та події бази даних
** database trigger ** — функція Supabase, яка автоматично викликає функцію Edge Function під час вставки, оновлення або вилучення рядка у вказаній таблиці, уможливлюючи роботу з потоками даних, які керуються подією.
- “Тригер бази даних у таблиці замовлень викликає функцію виконання Edge Function кожного разу, коли вставляється новий рядок зі станом підтверджено.” *
** webhook ** — зворотний виклик HTTP, який Supabase може надіслати до адреси URL Edge Function, коли відбудеться вказана подія бази даних; він повертає корисну інформацію JSON, яка описує змінений рядок.
“Ми налаштували webhook, щоб функція Edge Function сповіщення отримувала корисну інформацію JSON кожного разу, коли квиток підтримки буде призначено новому агенту.”
pg_ net — розширення PostgreSQL, доступне у Supabase, яке дозволяє функціям та тригерам бази даних безпосередньо здійснювати вихідні HTTP- запити, що дозволяє виклики Edge Function з SQL.
- “Ми використовували pg_ net всередині функції бази даних для синхронного виклику Edge Function, а не для очікування на асинхронне запуску тригера.” *
Секрети і розгортання
** secrets ** — змінні середовища, які зберігаються у безпечному місці у вашому проекті Supabase і вводяться до Edge Functions під час виконання; вони ніколи не буде показано у початкових кодах або журналах.
“Ми додали сторонній API ключ як секрет за допомогою Supabase CLI, тому він доступний як Deno.env.get всередині функції без передачі Git.”
** supabase functions deploy ** — команда CLI, яка збирає і вивантажує ваш код Edge Function до Supabase, негайно створюючи найновішу версію.
- “Після локального тестування функції за допомогою supabase functions serve, ми запустили supabase functions deploy send- invoice, щоб перевести її у виробничий режим.” *
** watcher ** — функція локального режиму розробки ( supabase functions serve --watch ), яка автоматично перезавантажує Edge Function кожного разу, коли ви зберігаєте зміни у файлі джерела.
- “Ми продовжували запускати наглядача у терміналі, тому кожного разу, коли ми зберігали файл обробника, локальна Edge Function перезапускалася, і ми могли негайно перевірити нову логіку.” *
Practice
Написати мінімальну функцію Supabase Edge, яка читає поле name з тіла запиту JSON і повертає привітання. Додати правильні ** заголовки CORS ** до відповіді. Потім скористайтеся CLI Supabase, щоб ** розгорнути ** його. Англійською мовою поясніть співробітнику, чому ** секрети ** ніколи не повинні бути твердо закодовані у коді функції і як до них можна отримати доступ у середовищі виконання Deno.
Навигація по нюансах: практичний підхід до функцій Supabase Edge
Погляньмо правді в очі: розуміння технічного жаргону може бути значною перешкодою при вивченні нових технологій. Особливо як розробник, який працює з незнайомими середовищами, такими як Supabase Edge Functions, використовуючи Deno, навігація складним словником є ключовою для ефективного спілкування і співпраці. Цей розділ присвячений вдосконаленню ваших навичок англійської мови в контексті цієї технології, звертаючи увагу не тільки на те, що ви робите, але і на те, як ви це описуєте — ключова відмінність у професійних умовах. Ми розглянемо звичайні фрази, що використовуються під час обговорення Edge Functions і як чітко сформулювати ваше мислення.
Однією з часто обговорюваних областей є CORS (Cross-Origin Resource Sharing). Легко перейти прямо до технічного визначення, але розмовне оформлення може бути ефективнішим. Замість того, щоб сказати «Ми повинні налаштувати CORS», спробуйте щось на зразок: «Щоб переконатися, що наша Edge Function може безпечно отримати доступ до бази даних — і це критична частина її роботи — ми налаштовуємо правила CORS. Це, по суті, надає змогу нашій функції запитувати дані з джерел поза нею, що є необхідним для взаємодії з сервером Supabase. » Аналогічно, коли йдеться про секрети — важливі для безпеки — краще сказати « Нам потрібно безпечно керувати цими змінними середовища », ніж просто вказати « Використовувати секрети ». Останнє слово не відповідає контексту і не передає важливості цієї практики.
Крім того, зверніть увагу на формулювання, пов’ язані зі стратегіями розгортання і відновлення. Розробник може спочатку сказати: « Давайте просто розгорнемо це ». Професійнішим підходом буде: « Перед розгортанням створимо чітку стратегію відновлення на випадок виникнення будь- яких непередбачених проблем — щоб ми могли швидко повернутися до попередньої робочої версії ». Аналогічно, коли обговорюється питання про тригери бази даних, важливо не обмежуватися лише повідомленням про те, що вони існують. Пояснення їхньої мети в рамках більш широкої архітектури є ключовим: « Ці тригери автоматично виконуються, коли конкретні події відбуваються в базі даних, що дозволяє нам динамічно реагувати без необхідності вручну запускати функцію. » Ясна і точна мова сприяє розумінню і мінімізує неправильні інтерпретації.
І нарешті, не бійтеся використовувати описову мову, коли пояснюєте свої дії. Замість того, щоб сказати « Я налаштовую середовище Deno », скажіть « Я налаштовую середовище виконання Deno з необхідними залежностями для нашої Edge Function ». Таким чином ви продемонструєте глибше розуміння і дозволите іншим легко слідкувати за вашим процесом мислення.
Ось приклад, який показує, як ви можете використовувати deno run для виконання простої функції:
# main.ts
import { assertEquals } from "https://deno.land/std@0.215.0/assert/mod.ts";
async function add(a: number, b: number): Promise<number> {
return a + b;
}
async function runTest() {
const result = await add(2, 3);
assertEquals(result, 5);
console.log("Test passed!");
}
await runTest();
Цей простий приклад демонструє основну функціональність — виконання коду Deno — і підкреслює важливість чітких описів при обговоренні технічних процесів. Пам’ ятайте, ефективне спілкування є ключовим умінням для будь- якого розробника, незалежно від його рідної мови.