Quickstarters
Feature Overview
How to Build a Backend for Elixir?
40 mnt
pendahuluan dalam tutorial ini, anda akan belajar cara membangun backend untuk elixir menggunakan back4app kami akan membahas integrasi fitur fitur penting back4app—seperti manajemen database, cloud code functions, rest dan graphql apis, otentikasi pengguna, dan kueri waktu nyata (live queries)—untuk menciptakan backend yang aman, skalabel, dan kuat elixir, yang berjalan di atas erlang vm (beam) dan memanfaatkan otp (erlang otp), dikenal karena lingkungan yang toleran terhadap kesalahan dan bersifat konkuren, yang sangat cocok dengan back4app untuk membentuk infrastruktur modern yang berkinerja tinggi anda akan melihat bagaimana pengaturan cepat back4app dan lingkungan yang intuitif dapat secara drastis mengurangi waktu dan usaha anda dibandingkan dengan mengonfigurasi server dan database secara manual ini termasuk memanfaatkan pencocokan pola, ditambah menghubungkan ke kerangka web pilihan elixir pada akhir tutorial ini, anda akan memiliki dasar yang kuat yang dapat anda kembangkan menjadi aplikasi siap produksi atau ditingkatkan dengan logika kustom dan api pihak ketiga prasyarat untuk menyelesaikan tutorial ini, anda akan membutuhkan akun back4app dan proyek back4app baru memulai dengan back4app https //www back4app com/docs/get started/new parse app jika anda tidak memiliki akun, anda dapat membuatnya secara gratis ikuti panduan di atas untuk menyiapkan proyek anda lingkungan pengembangan elixir dasar pastikan anda telah menginstal elixir di mesin anda jika anda berencana untuk menggunakan kerangka web seperti phoenix, lihat panduan instalasi phoenix https //hexdocs pm/phoenix/installation html sebagai referensi pemahaman tentang konsep elixir dokumentasi resmi elixir https //elixir lang org/docs html jika anda baru mengenal elixir, tinjau sumber daya ini atau tutorial pemula sebelum memulai pastikan anda memiliki semua prasyarat ini sebelum anda mulai memiliki proyek back4app anda yang disiapkan dan lingkungan elixir lokal anda siap akan membantu anda mengikuti dengan lebih lancar langkah 1 – membuat proyek baru di back4app dan menghubungkan buat proyek baru langkah pertama dalam cara membangun backend untuk elixir di back4app adalah membuat proyek baru jika anda belum membuat satu, ikuti langkah langkah ini masuk ke akun back4app anda klik tombol “aplikasi baru” di dasbor back4app anda beri nama aplikasi anda (misalnya, “elixir backend tutorial”) setelah proyek dibuat, anda akan melihatnya terdaftar di dasbor back4app anda proyek ini akan menjadi dasar untuk semua konfigurasi backend yang dibahas dalam tutorial ini menghubungkan melalui rest atau graphql back4app menggunakan platform parse sebagai dasar untuk elixir, saat ini tidak ada sdk parse resmi sebagai gantinya, anda dapat dengan mudah terhubung ke back4app menggunakan api rest atau graphql dalam proyek elixir anda, anda akan ambil application id anda dan rest atau graphql keys dari bagian “app settings” atau “security & keys” di dasbor back4app konfigurasikan permintaan http menggunakan pustaka elixir seperti httpoison https //hex pm/packages/httpoison atau tesla https //hex pm/packages/tesla sebagai contoh, untuk menyimpan kredensial dalam file konfigurasi ( config/dev exs , atau yang serupa) config \ my app, \ b4a, app id "your application id", rest key "your rest api key", server url "https //parseapi back4app com" anda kemudian dapat merujuk kredensial ini dalam kode anda untuk melakukan panggilan rest sepanjang panduan ini, kami akan menunjukkan cara berinteraksi dengan database back4app, sistem pengguna, dan fitur lainnya menggunakan permintaan http atau graphql standar langkah 2 – menyiapkan database membuat model data di back4app, data disimpan dalam kelas anda dapat membuat kelas baru di dasbor back4app navigasikan ke bagian “database” di dasbor back4app anda buat kelas baru (misalnya, “todo”) dan tambahkan kolom yang relevan, seperti judul (string) dan iscompleted (boolean) membuat model data menggunakan ai agent back4app juga menyediakan ai agent untuk membantu anda mendeskripsikan dan membuat model data anda buka ai agent dari dasbor aplikasi anda atau menu deskripsikan model data anda dalam bahasa yang sederhana (misalnya, “tolong, buat aplikasi todo baru dengan skema kelas yang lengkap ”) biarkan ai agent membuat skema secara otomatis membaca dan menulis data menggunakan sdk (jika berlaku) karena elixir tidak memiliki sdk parse resmi, kita akan melewatkan penggunaan sdk secara langsung sebagai gantinya, kita akan menunjukkan rest , graphql , dan live queries pendekatan di bawah membaca dan menulis data menggunakan rest api instal klien http seperti httpoison di mix exs defp deps do \[ {\ httpoison, " > 1 8"} ] end kemudian, jalankan mix deps get untuk membuat (menyimpan) objek todo dari aplikasi elixir anda defmodule myapp todo do @moduledoc false require logger alias myapp config def create todo(title, is completed) do url = config server url() <> "/classes/todo" headers = \[ {"x parse application id", config app id()}, {"x parse rest api key", config rest key()}, {"content type", "application/json"} ] body = jason encode!(%{"title" => title, "iscompleted" => is completed}) case httpoison post(url, body, headers) do {\ ok, %httpoison response{status code 201, body resp body}} > logger info("todo created #{resp body}") {\ ok, resp body} {\ ok, %httpoison response{status code status, body error body}} > logger error("error creating todo (#{status}) #{error body}") {\ error, error body} {\ error, error} > logger error("http error #{inspect(error)}") {\ error, error} end end end dan untuk mengquery objek todo anda def fetch todos() do url = config server url() <> "/classes/todo" headers = \[ {"x parse application id", config app id()}, {"x parse rest api key", config rest key()} ] httpoison get(url, headers) end membaca dan menulis data menggunakan api graphql anda juga dapat berinteraksi melalui graphql misalnya, membuat todo mutation { createtodo(input { fields { title "clean the house" iscompleted false } }) { todo { objectid title iscompleted } } } di elixir, anda mungkin mengirim ini dengan klien http juga graph query = """ mutation { createtodo(input { fields { title "new from graphql", iscompleted false } }) { todo { objectid title } } } """ url = config server url() <> "/graphql" headers = \[ {"x parse application id", config app id()}, {"x parse rest api key", config rest key()}, {"content type", "application/json"} ] httpoison post(url, jason encode!(%{"query" => graph query}), headers) bekerja dengan live queries (opsional) untuk pembaruan waktu nyata, back4app menawarkan live queries anda dapat mengaktifkan live queries di pengaturan server karena saat ini tidak ada pustaka klien parse elixir yang asli, anda biasanya akan terhubung melalui saluran phoenix atau klien websocket kustom ke wss\ //your subdomain here b4a io endpoint yang disediakan ini bisa lebih rumit, memerlukan pengkodean kustom untuk menangani langganan, pesan, dll langkah 3 – menerapkan keamanan dengan acl dan clp ikhtisar singkat back4app menawarkan daftar kontrol akses (acl) dan izin tingkat kelas (clp) untuk melindungi dan mengelola akses data acl berlaku untuk objek individu, sementara clp berlaku untuk seluruh kelas langkah demi langkah izin tingkat kelas (clp) di dasbor back4app anda, di bawah database , pilih sebuah kelas (misalnya, “todo”) dan buka tab izin tingkat kelas sesuaikan pengaturan (misalnya, “memerlukan autentikasi” atau “tidak ada akses” untuk publik) konfigurasi acl saat membuat atau memperbarui objek, anda dapat mengirim data acl dalam permintaan rest atau graphql anda misalnya, tentukan field acl dalam json jika anda memerlukan kontrol per objek yang lebih rinci untuk informasi lebih lanjut, kunjungi pedoman keamanan aplikasi https //www back4app com/docs/security/parse security langkah 4 – menulis fungsi cloud code mengapa cloud code cloud code memungkinkan anda menjalankan logika sisi server tanpa mengelola server anda sendiri dengan elixir, anda biasanya bergantung pada otp untuk konkruensi, tetapi di sini anda dapat dengan mudah membuat cloud code javascript di back4app untuk menangani validasi, pemicu, atau logika bisnis kustom kode ini berjalan di parse server, sehingga anda dapat menjaga kode elixir anda tetap fokus pada tugas klien atau mikroservis sementara pekerjaan berat dilakukan di cloud code contoh fungsi di main js anda di dasbor back4app atau menggunakan cli // main js parse cloud define('calculatetextlength', async (request) => { const { text } = request params; if (!text) { throw new error('no text provided'); } return { length text length }; }); penerapan terapkan melalui back4app cli https //www back4app com/docs/local development/parse cli atau dengan menempelkan ke dasbor di bawah cloud code > functions dan mengklik terapkan memanggil cloud code dari elixir, anda mungkin menggunakan defmodule myapp cloudfunctions do alias myapp config def calculate text length(text) do url = config server url() <> "/functions/calculatetextlength" headers = \[ {"x parse application id", config app id()}, {"x parse rest api key", config rest key()}, {"content type", "application/json"} ] body = jason encode!(%{text text}) httpoison post(url, body, headers) end end langkah 5 – mengonfigurasi autentikasi aktifkan atau siapkan autentikasi back4app menggunakan kelas user untuk autentikasi anda dapat mengelola pendaftaran, login, dan pengaturan ulang kata sandi dengan mudah dari elixir, anda biasanya akan menggunakan panggilan rest defmodule myapp auth do alias myapp config def sign up user(username, password, email) do url = config server url() <> "/users" headers = \[ {"x parse application id", config app id()}, {"x parse rest api key", config rest key()}, {"content type", "application/json"} ] body = jason encode!(%{ username username, password password, email email }) httpoison post(url, body, headers) end def log in user(username, password) do url = config server url() <> "/login?username=#{username}\&password=#{password}" headers = \[ {"x parse application id", config app id()}, {"x parse rest api key", config rest key()} ] httpoison get(url, headers) end end login sosial back4app mendukung integrasi dengan google, apple, facebook, dan lainnya dalam banyak kasus, anda akan mengarahkan pengguna ke alur oauth, kemudian menggunakan token yang dikembalikan oleh penyedia ini untuk menyelesaikan login parse lihat dokumentasi login sosial https //www back4app com/docs/platform/sign in with apple untuk detail langkah 6 – menangani penyimpanan file mengatur penyimpanan file back4app menyimpan file dengan aman dari elixir, anda dapat mengunggah file melalui rest defmodule myapp filestorage do alias myapp config require logger def upload file(file path) do file name = path basename(file path) url = config server url() <> "/files/#{file name}" headers = \[ {"x parse application id", config app id()}, {"x parse rest api key", config rest key()}, {"content type", "application/octet stream"} ] body = file read!(file path) case httpoison post(url, body, headers) do {\ ok, %httpoison response{status code 201, body resp body}} > logger info("file uploaded #{resp body}") {\ ok, resp body} error > logger error("error uploading file #{inspect(error)}") error end end end anda akan menerima respons json dengan url file, yang dapat anda simpan dalam kelas (misalnya, foto ) untuk referensi pertimbangan keamanan anda dapat mengonfigurasi siapa yang dapat mengunggah file di fileupload pengaturan proyek back4app anda, membatasi unggahan hanya untuk pengguna yang terautentikasi jika diinginkan langkah 7 – verifikasi email dan reset kata sandi ikhtisar verifikasi email memastikan bahwa pengguna memiliki alamat email yang digunakan selama pendaftaran reset kata sandi memungkinkan mereka memulihkan akun dengan aman kedua fitur ini sudah terintegrasi di back4app konfigurasi dashboard back4app aktifkan verifikasi email di “pengaturan aplikasi” atau “autentikasi” aplikasi anda konfigurasi alamat pengirim dan template email aktifkan reset kata sandi untuk memungkinkan pengguna mereset melalui tautan yang dikirimkan kepada mereka kode/implementasi setelah diaktifkan di dashboard, anda dapat memicu reset kata sandi defmodule myapp auth do def request password reset(email) do url = config server url() <> "/requestpasswordreset" headers = \[ {"x parse application id", config app id()}, {"x parse rest api key", config rest key()}, {"content type", "application/json"} ] body = jason encode!(%{email email}) httpoison post(url, body, headers) end end langkah 8 – penjadwalan tugas dengan cloud jobs pekerjaan cloud contoh // main js parse cloud job('cleanupoldtodos', async (request) => { const todo = parse object extend('todo'); const query = new parse query(todo); const now = new date(); const thirty days = 30 24 60 60 1000; const cutoff = new date(now thirty days); query lessthan('createdat', cutoff); try { const oldtodos = await query find({ usemasterkey true }); await parse object destroyall(oldtodos, { usemasterkey true }); return `deleted ${oldtodos length} old todos `; } catch (err) { throw new error('error during cleanup ' + err message); } }); terapkan kode tersebut pergi ke dasbor back4app > pengaturan aplikasi > pengaturan server > pekerjaan latar belakang jadwalkan pekerjaan untuk dijalankan setiap hari atau pada frekuensi yang anda pilih langkah 9 – mengintegrasikan webhook definisi webhooks memungkinkan aplikasi back4app anda untuk mengirim permintaan http ke layanan eksternal (misalnya, saluran slack atau stripe) ketika peristiwa tertentu terjadi konfigurasi navigasikan ke konfigurasi webhooks di dasbor back4app anda > lainnya > webhooks atur endpoint (misalnya, https //your service com/webhook endpoint ) konfigurasi pemicu seperti “rekaman baru di kelas todo ” contoh jika anda ingin mengirim data ke slack setiap kali todo dibuat, anda dapat menambahkan webhook baru yang mengarah ke url webhook masuk slack anda anda juga dapat mendefinisikan webhooks dalam cloud code dengan mengirim permintaan http kustom dalam pemicu seperti aftersave langkah 10 – menjelajahi panel admin back4app di mana menemukannya aplikasi back4app admin app adalah antarmuka yang ramah pengguna untuk mengelola data anda anda dapat mengaktifkannya dari app dashboard > more > admin app fitur buat pengguna admin pertama , yang mengatur peran b4aadminuser dan kelas tambahan tetapkan subdomain untuk mengakses antarmuka admin masuk untuk melihat dan mengelola data dalam antarmuka yang sederhana kesimpulan dengan mengikuti tutorial ini tentang cara membangun backend untuk elixir dengan back4app, anda telah membuat backend yang aman di platform back4app menggunakan elixir untuk integrasi mengatur database dengan kelas, tipe data, dan hubungan menggunakan rest/graphql untuk berinteraksi dengan data anda dari elixir menerapkan keamanan menggunakan acl dan clp menambahkan logika kustom dengan fungsi cloud code mengonfigurasi otentikasi pengguna dengan verifikasi email dan pengaturan ulang kata sandi menangani penyimpanan file dan pengambilan menjadwalkan pekerjaan latar belakang untuk otomatisasi mengintegrasikan layanan eksternal dengan webhook menjelajahi panel admin back4app untuk manajemen data yang mudah dengan model konkruensi elixir (didukung oleh erlang vm) dan otp, dikombinasikan dengan layanan back4app yang dapat diskalakan dan fleksibel, anda dapat membangun backend yang sangat kuat terus menjelajahi fitur fitur yang lebih canggih, integrasikan logika bisnis anda, dan biarkan back4app membantu anda menangani pekerjaan berat langkah selanjutnya bangun aplikasi elixir yang siap produksi dengan menggabungkan backend ini dengan framework web elixir/phoenix pilihan anda integrasikan fitur fitur canggih seperti kontrol akses berbasis peran atau api pihak ketiga (gerbang pembayaran, layanan pesan) jelajahi dokumentasi resmi back4app untuk keamanan lanjutan, log, penyetelan kinerja, dan lainnya lihat tutorial lainnya untuk aplikasi waktu nyata, dasbor iot, atau layanan berbasis lokasi dengan pencocokan pola dan konkruensi otp yang tersedia, anda siap untuk menangani berbagai aplikasi!