Quickstarters
Feature Overview
How to Build a Backend for Astro?
21 mnt
pendahuluan dalam panduan ini tentang cara membangun backend untuk astro , anda akan belajar bagaimana cara membuat backend lengkap menggunakan back4app untuk proyek astro anda kami akan membahas integrasi fitur penting back4app, termasuk manajemen database, fungsi cloud, otentikasi, penyimpanan file, kueri waktu nyata, dan lainnya—menunjukkan pendekatan praktis untuk membangun aplikasi cepat dengan alat modern dengan memanfaatkan lingkungan back4app, anda melewatkan banyak pekerjaan berat, seperti mengonfigurasi server atau menulis lapisan keamanan dari awal pengaturan ini menghemat waktu dan usaha anda, sambil tetap memungkinkan anda untuk mendefinisikan endpoint untuk logika sisi server yang kuat anda juga akan melihat bagaimana cara menggabungkan variabel lingkungan dalam proyek astro anda, sehingga lebih mudah untuk menyimpan kredensial atau data sensitif lainnya dengan aman setelah anda selesai, anda akan memiliki struktur backend yang dapat diskalakan untuk astro dan tahu bagaimana cara menangani data dengan rest, graphql, otentikasi pengguna, peristiwa waktu nyata, dan lainnya anda akan siap untuk menambahkan logika anda sendiri untuk kebutuhan dunia nyata sambil mempertahankan fondasi keamanan yang kuat prasyarat akun back4app dan proyek back4app baru memulai dengan back4app https //www back4app com/docs/get started/new parse app proyek astro menyiapkan astro https //docs astro build/en/getting started/ pastikan anda memiliki lingkungan pengembangan astro dasar dan node js terinstal node js (versi 14 atau lebih tinggi) terinstal menginstal node js https //nodejs org/en/download/ familiaritas dengan konsep front end dan server side anda harus tahu cara membuat atau mengedit astro file, menangani variabel lingkungan, dan melakukan permintaan post sederhana dengan fetch atau pustaka serupa pastikan prasyarat ini sudah terpenuhi sebelum anda mulai memiliki akun back4app, lingkungan astro, dan pengetahuan dasar javascript akan membantu anda mengikuti tutorial ini dengan lebih lancar langkah 1 – membuat proyek baru di back4app dan menghubungkan buat proyek baru masuk ke akun back4app anda klik aplikasi baru di dasbor back4app anda dan beri nama (misalnya, “astro backend tutorial”) ambil kredensial back4app di dasbor back4app anda, di bawah pengaturan aplikasi atau keamanan & kunci , catat id aplikasi , kunci api rest , dan url server ( https //parseapi back4app com secara default) variabel lingkungan ini akan digunakan dalam integrasi astro anda menghubungkan astro ke back4app melalui api karena kita tidak menggunakan parse sdk secara langsung, kita akan membuat permintaan menggunakan fetch atau pustaka lain dari file astro kita simpan kredensial anda dalam variabel lingkungan untuk keamanan misalnya, dalam file env langkah 2 – menyiapkan database membuat model data buat model data secara manual pergi ke dasbor back4app anda dan klik pada database buat kelas baru (misalnya, “todo”), dan tambahkan field seperti title (string) dan iscompleted (boolean) gunakan ai agent untuk membuat model data buka ai agent dari dasbor aplikasi anda deskripsikan skema anda dalam bahasa yang sederhana (misalnya, “buat aplikasi todo baru dengan kelas yang memiliki field title dan iscompleted ”) agen akan menghasilkan kelas dan field untuk anda membaca dan menulis data menggunakan rest api dengan model data anda siap, mari kita definisikan sebuah endpoint di dalam komponen astro atau file sisi server untuk menangani permintaan post dan permintaan baca misalnya, anda mungkin membuat file seperti src/pages/api/todos astro \ import type { apiroute } from 'astro'; export const post apiroute = async ({ request }) => { const body = await request json(); // "create" a todo const url = `${import meta env back4app server url}/classes/todo`; const response = await fetch(url, { method 'post', headers { 'x parse application id' import meta env back4app app id, 'x parse rest api key' import meta env back4app rest key, 'content type' 'application/json' }, body json stringify({ title body title, iscompleted body iscompleted }) }); const data = await response json(); return new response(json stringify(data), { status 200 }); }; export const get apiroute = async () => { // "read" all todos const url = `${import meta env back4app server url}/classes/todo`; const response = await fetch(url, { method 'get', headers { 'x parse application id' import meta env back4app app id, 'x parse rest api key' import meta env back4app rest key } }); const data = await response json(); return new response(json stringify(data), { status 200 }); }; \ \<html lang="en"> \<head> \<meta name="viewport" content="width=device width, initial scale=1 0" /> \<link rel="icon" type="image/svg+xml" href="/favicon svg" /> \<meta name="generator" content="astro generator" /> \<title>todos api\</title> \</head> \<body> \<h1>api for todo\</h1> \</body> \</html> contoh ini menggunakan variabel lingkungan ( import meta env ) untuk menyimpan kredensial back4app anda kami mendefinisikan dua metode dalam satu file export const post untuk membuat todo, dan export const get untuk mengambil semua todos anda dapat menyesuaikannya agar sesuai dengan struktur komponen tata letak anda dan halaman situs lainnya membaca dan menulis data menggunakan api graphql demikian pula, anda dapat melakukan permintaan graphql dari halaman astro anda \ export async function post({ request }) { const body = await request json(); const url = `${import meta env back4app server url}/graphql`; const query = ` mutation { createtodo(input { fields { title "${body title}" iscompleted ${body iscompleted} } }) { todo { objectid title iscompleted } } } `; const response = await fetch(url, { method 'post', headers { 'x parse application id' import meta env back4app app id, 'x parse rest api key' import meta env back4app rest key, 'content type' 'application/json' }, body json stringify({ query }) }); const data = await response json(); return new response(json stringify(data), { status 200 }); } \ \<html lang="en"> \<head> \<meta name="viewport" content="width=device width, initial scale=1 0" /> \<link rel="icon" type="image/svg+xml" href="/favicon svg" /> \<title>todos graphql\</title> \</head> \<body> \<h1>graphql endpoint for todos\</h1> \</body> \</html> bekerja dengan live queries (opsional) live queries memungkinkan pembaruan data secara real time untuk menggunakannya, aktifkan live queries di dasbor back4app dan konfigurasikan koneksi websocket namun, jika anda membangun situs astro statis, anda mungkin mengintegrasikan pembaruan real time melalui skrip sisi klien yang mengarah ke wss\ //your subdomain b4a io live queries dapat mendorong perubahan ke klien yang terhubung setiap kali catatan dibuat, diperbarui, atau dihapus langkah 3 – menerapkan keamanan dengan acl dan clp acls (daftar kontrol akses) dan clps (izin tingkat kelas) adalah dasar untuk mengontrol akses data anda dapat mengonfigurasinya di bagian database dari dasbor back4app anda misalnya batasi baca/tulis hanya untuk pengguna yang terautentikasi gunakan acl untuk keamanan per objek gunakan pedoman keamanan back4app https //www back4app com/docs/security/parse security untuk memastikan data anda tetap terlindungi anda juga dapat menetapkan aturan ini dari dasbor, memastikan bahwa bahkan jika panggilan rest anda terbuka, hanya kredensial yang benar yang dapat memodifikasi atau melihat data langkah 4 – menulis fungsi cloud code mengapa cloud code anda dapat memindahkan logika bisnis utama ke sisi server, menghindari paparan rahasia atau kebutuhan untuk memelihara server terpisah cloud code dapat mendengarkan pemicu (beforesave, aftersave) atau menangani endpoint kustom contoh // main js (cloud code) parse cloud define('greetuser', async (request) => { const username = request params name || 'guest'; return `hello, ${username}! welcome to the astro project `; }); parse cloud beforesave('todo', (request) => { const todo = request object; if (!todo get('title')) { throw 'todos must have a title '; } }); terapkan ini melalui back4app cli https //www back4app com/docs/local development/parse cli atau langsung di bagian cloud code dari dasbor back4app anda memanggil fungsi dari astro, anda dapat mendefinisikan titik akhir yang menggunakan fetch untuk mengakses cloud function anda \ export async function post({ request }) { const body = await request json(); const url = `${import meta env back4app server url}/functions/greetuser`; const response = await fetch(url, { method 'post', headers { 'x parse application id' import meta env back4app app id, 'x parse rest api key' import meta env back4app rest key, 'content type' 'application/json' }, body json stringify({ name body name }) }); const data = await response json(); return new response(json stringify(data), { status 200 }); } \ \<html lang="en"> \<head> \<meta name="viewport" content="width=device width, initial scale=1 0" /> \<link rel="icon" type="image/svg+xml" href="/favicon svg" /> \<title>cloud code greet\</title> \</head> \<body> \<h1>greet function endpoint\</h1> \</body> \</html> langkah 5 – mengonfigurasi autentikasi back4app menggunakan kelas user untuk menangani akun pengguna dengan rest, anda dapat mengelola pendaftaran, login, atau logout misalnya, mendaftar pengguna baru curl x post \\ h "x parse application id your app id" \\ h "x parse rest api key your rest key" \\ h "content type application/json" \\ d '{"username" "user1","password" "secret123","email" "user1\@example com"}' \\ https //parseapi back4app com/users anda dapat mereplikasi logika ini dari astro dengan fetch dengan cara yang serupa, menggunakan variabel lingkungan setelah masuk, pengguna menerima token sesi untuk permintaan berikutnya login sosial untuk penyedia sosial (seperti google atau apple), gunakan titik akhir tertentu atau atur aliran oauth lihat dokumentasi masuk dengan apple https //www back4app com/docs/platform/sign in with apple atau panduan login sosial lainnya untuk mengintegrasikan autentikasi yang lebih canggih ini sangat berguna jika anda ingin membiarkan orang masuk dari proyek astro anda dengan sedikit gesekan langkah 6 – menangani penyimpanan file untuk menyimpan file di back4app, anda mengirimnya dengan rest api misalnya curl x post \\ h "x parse application id your app id" \\ h "x parse rest api key your rest key" \\ h "content type image/png" \\ \ data binary "@path/to/local/image png" \\ https //parseapi back4app com/files/myimage png respon berisi url file anda dapat menghubungkan url tersebut ke sebuah catatan, seperti objek foto kelas, memastikan anda melacak referensi ke file di database anda anda juga dapat mengontrol siapa yang dapat mengunggah dengan menyesuaikan pengaturan keamanan file di konfigurasi aplikasi anda langkah 7 – verifikasi email dan reset kata sandi aktifkan verifikasi email di bawah pengaturan aplikasi di dasbor back4app, aktifkan verifikasi email dan sesuaikan template email verifikasi anda atur reset kata sandi demikian pula, konfigurasikan email reset kata sandi anda dan pastikan kelas user memiliki alamat email yang valid alur ketika seorang pengguna meminta reset dari proyek astro anda (melalui panggilan api), back4app secara otomatis mengirim email dengan tautan aman untuk mengubah kata sandi mereka langkah 8 – penjadwalan tugas dengan cloud jobs gunakan cloud jobs untuk menjadwalkan pemeliharaan berulang atau tugas lainnya // main js parse cloud job('cleanupoldtodos', async () => { const query = new parse query('todo'); const now = new date(); const thirty days = 30 24 60 60 1000; query lessthan('createdat', new date(now thirty days)); const oldtodos = await query find({ usemasterkey true }); await parse object destroyall(oldtodos, { usemasterkey true }); return `deleted ${oldtodos length} old todos `; }); deploy kode anda, lalu jadwalkan pekerjaan dari pengaturan server > pekerjaan latar belakang di konsol back4app ini mengotomatiskan tugas seperti membersihkan data, mengirim email, atau fungsi rutin lainnya yang ingin anda jalankan pada interval tertentu langkah 9 – mengintegrasikan webhooks webhooks memungkinkan anda memberi tahu layanan eksternal ketika peristiwa tertentu terjadi di aplikasi back4app anda misalnya, anda dapat mengirim data ke slack setiap kali todo baru dibuat pergi ke more > webhooks di dasbor back4app anda tambahkan webhook yang mengarah ke url slack pilih peristiwa (misalnya, objek dibuat di kelas todo) ini memungkinkan aliran permintaan/respons untuk menjaga sistem eksternal anda tetap sinkron dengan data aplikasi berbasis astro anda langkah 10 – menjelajahi panel admin back4app aplikasi admin back4app adalah panel manajemen yang ramah pengguna untuk pengeditan data ini sangat berguna bagi anggota tim non teknis yang memerlukan akses langsung ke database anda aktifkan aplikasi admin di lainnya > aplikasi admin buat pengguna admin untuk akses yang aman gunakan panel ini untuk dengan cepat melakukan operasi crud, memeriksa log, atau mengonfigurasi pengaturan yang lebih lanjut kesimpulan anda telah berhasil membuat backend yang aman dan efisien untuk proyek astro menggunakan back4app sepanjang tutorial ini, anda menentukan dan mengonfigurasi skema basis data menggunakan api rest dan graphql untuk membaca dan menulis data mengamankan data dengan acl, clp, dan otentikasi pengguna memperluas logika melalui cloud code dan pekerjaan terjadwal menangani penyimpanan file untuk gambar atau dokumen mengintegrasikan webhook untuk notifikasi eksternal menjelajahi panel admin untuk manajemen data yang disederhanakan pendekatan ini menekankan bagaimana membangun backend untuk astro yang dapat diandalkan, skalabel, dan mudah untuk dipelihara dengan memanfaatkan variabel lingkungan, anda menjaga kredensial anda tetap aman sambil memastikan kode anda tetap fleksibel untuk pertumbuhan di masa depan langkah selanjutnya terapkan proyek astro anda dengan platform hosting yang mendukung rendering sisi server atau lingkungan berbasis node tambahkan fitur canggih , seperti kontrol akses berbasis peran atau integrasi pembayaran khusus, menggunakan cloud code atau api eksternal optimalkan kinerja dengan menerapkan strategi caching dan menyesuaikan pengaturan konten viewport anda untuk pengalaman pengguna yang lebih baik tinjau dokumen back4app untuk mempelajari tentang log, analitik, dan langkah langkah keamanan yang lebih canggih terus eksplorasi fitur real time dengan live queries dan bangun aplikasi yang benar benar dinamis dan kolaboratif