Cách Tạo API Serverless Với Supabase Edge Functions

05/03/2026 P T P Chung 6 phút đọc 0 bình luận

Supabase Edge Functions là gì và tại sao nên dùng?

Supabase Edge Functions là một giải pháp serverless cho phép bạn chạy code backend ở các vị trí địa lý gần người dùng nhất. Điểm khác biệt so với các dịch vụ serverless khác là Edge Functions được triển khai trên mạng lưới CDN toàn cầu, giúp giảm độ trễ và tăng tốc độ phản hồi. Với Supabase, bạn có thể viết Edge Functions bằng TypeScript hoặc JavaScript, rồi deploy trực tiếp từ dashboard hoặc CLI.

Lợi ích rõ ràng nhất là bạn không cần quản lý server, tự động scale theo nhu cầu, và tích hợp mượt mà với database và authentication của Supabase. Điều này rất phù hợp để xây dựng API nhỏ gọn, webhook, hoặc các tác vụ cần xử lý nhanh ở biên mạng.

Các khái niệm cơ bản cần nắm

Mỗi Edge Function là một file TypeScript/JavaScript trong thư mục supabase/functions/. Bạn export một hàm handler nhận vào RequestEnv object, trả về Response. Supabase tự động build và deploy khi bạn chạy lệnh supabase functions deploy.

Các biến môi trường (environment variables) được quản lý qua supabase.functions.config(), giúp bạn lưu trữ secret một cách an toàn. Ngoài ra, bạn có thể import các module từ npm, nhưng cần lưu ý giới hạn kích thước bundle để đảm bảo tốc độ.

Cài đặt và thiết lập dự án

Để bắt đầu, bạn cần cài đặt CLI của Supabase:

npm install -g supabase

Sau đó, khởi tạo project nếu chưa có:

supabase init

Trong project, tạo thư mục supabase/functions/ và file api.ts bên trong. Đây sẽ là nơi chứa code của function đầu tiên.

Viết API đơn giản với Edge Functions

Giả sử bạn muốn tạo một API trả về danh sách sản phẩm từ database. Đầu tiên, cài thêm @supabase/supabase-js để kết nối database:

npm install @supabase/supabase-js

Code mẫu trong api.ts:

import { serve } from 'https://deno.land/x/surf/mod.ts'
import { createClient } from '@supabase/supabase-js'

const supabaseUrl = 'your-project-url' const supabaseKey = 'your-anon-key'

const supabase = createClient(supabaseUrl, supabaseKey)

Quảng cáo

300x250 In-Content Advertisement

serve({ '/api/products': async (req) => { const { data, error } = await supabase .from('products') .select('*') .order('id', { ascending: true })

if (error) { return new Response(JSON.stringify({ error: error.message }), { status: 500, headers: { 'Content-Type': 'application/json' }, }) }

return new Response(JSON.stringify(data), { status: 200, headers: { 'Content-Type': 'application/json' }, }) }, })

Deploy và test API

Sau khi code xong, deploy bằng lệnh:

supabase functions deploy api

Khi deploy thành công, CLI sẽ trả về URL của function, ví dụ: https://your-project.supabase.co/api. Bạn có thể test bằng curl hoặc browser:

curl https://your-project.supabase.co/api/products

Một số tips thực tế

- Giới hạn thời gian chạy: Edge Functions có timeout khoảng 10-30 giây, nên tránh các tác vụ nặng hoặc vòng lặp vô hạn. - Size bundle: Giữ bundle nhỏ để tăng tốc độ khởi động. Sử dụng tree-shaking và chỉ import những module cần thiết. - Security: Không lưu secret trong code, luôn dùng environment variables. Nếu cần xác thực user, tận dụng Supabase Auth token từ request header. - CORS: Nếu API được gọi từ frontend, nhớ set CORS header phù hợp.

Kết luận

Supabase Edge Functions cung cấp một cách đơn giản và hiệu quả để xây dựng API serverless, đặc biệt khi kết hợp với database và auth của Supabase. Với khả năng triển khai toàn cầu, chi phí hợp lý và độ trễ thấp, đây là lựa chọn đáng cân nhắc cho các dự án vừa và nhỏ, hoặc khi bạn muốn tập trung vào code thay vì quản lý infrastructure.

Nếu bạn mới bắt đầu, hãy thử tạo vài API nhỏ, test kỹ trước khi đưa vào production. Khi đã quen, bạn sẽ thấy việc xây dựng backend nhanh chóng và linh hoạt hơn rất nhiều.

Quảng cáo

728x90 Bottom Advertisement

Thay thế bằng mã Google AdSense

Chia sẻ bài viết

Facebook Twitter

Bình luận

Chia sẻ ý kiến của bạn về bài viết này

Viết bình luận

Bình luận của bạn sẽ được kiểm duyệt trước khi hiển thị

Chưa có bình luận nào

Hãy là người đầu tiên bình luận về bài viết này!