Quickstarters
Feature Overview
How to Build a Backend for Flask?
40 mnt
pendahuluan dalam tutorial ini, anda akan belajar cara membangun backend untuk flask menggunakan back4app flask adalah kerangka backend yang ringan yang menangani permintaan http dengan mudah, dan bekerja secara efisien dalam mode debug selama pengembangan kami akan membahas integrasi fitur fitur penting back4app—seperti manajemen database, fungsi cloud code, api rest dan graphql, otentikasi pengguna, dan kueri waktu nyata (live queries)—untuk membuat backend yang aman, skalabel, dan kuat untuk aplikasi flask anda anda juga akan melihat bagaimana pengaturan cepat back4app dan lingkungan yang intuitif dapat secara drastis mengurangi waktu dan usaha dibandingkan dengan mengonfigurasi server dan database secara manual kami akan menggunakan kode python untuk menghubungkan flask ke server parse back4app sepanjang jalan, anda akan mendapatkan pengalaman langsung dengan fungsionalitas kunci, termasuk fitur keamanan tingkat lanjut, penjadwalan tugas dengan cloud jobs, dan pengaturan webhook untuk integrasi eksternal pada akhir tutorial ini, anda akan siap untuk meningkatkan pengaturan dasar ini menjadi aplikasi siap produksi atau dengan mudah menggabungkan logika kustom dan api pihak ketiga sesuai kebutuhan 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 belum memiliki akun, anda dapat membuatnya secara gratis ikuti panduan di atas untuk menyiapkan proyek anda lingkungan pengembangan flask dasar anda dapat menginstal flask melalui pip install flask pastikan anda telah menginstal python 3 7+ di mesin anda pip install parse paket python ini memungkinkan aplikasi flask anda berinteraksi dengan parse server back4app keterampilan dengan konsep python dan flask dokumentasi resmi flask https //flask palletsprojects com/en/2 2 x/ jika anda baru mengenal flask, tinjau dokumen resmi atau tutorial pemula sebelum memulai pastikan anda memiliki semua prasyarat ini sebelum anda mulai memiliki proyek back4app anda yang disiapkan dan lingkungan flask lokal anda siap akan membantu anda mengikuti lebih mudah langkah 1 – membuat proyek baru di back4app dan menghubungkan buat proyek baru langkah pertama dalam membangun backend flask anda 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, “tutorial backend flask”) setelah proyek dibuat, anda akan melihatnya terdaftar di dasbor back4app anda proyek ini adalah dasar dari semua konfigurasi backend sambungkan sdk parse ke flask back4app bergantung pada platform parse untuk mengelola data anda, menyediakan fitur real time, menangani otentikasi pengguna, dan lainnya menyambungkan aplikasi flask anda ke back4app melibatkan pemasangan paket parse python dan menginisialisasinya dengan kredensial dari dasbor back4app anda ambil kunci parse anda di dasbor back4app anda, navigasikan ke bagian “pengaturan aplikasi” atau “keamanan & kunci” untuk menemukan id aplikasi dan kunci klien (atau kunci api rest jika diperlukan) anda juga akan menemukan url server parse (sering dalam format https //parseapi back4app com ) pasang sdk python parse di lingkungan flask anda dengan menjalankan pip install parse inisialisasi parse di aplikasi flask anda buat file (misalnya, parse config py ) di direktori bernama app atau di mana pun anda menyimpan modul backend anda parse config py import parse \# replace the placeholders with your back4app credentials parse application id = "your application id" parse client key = "your client key" parse server url = "https //parseapi back4app com" kemudian, di file aplikasi flask utama anda (misalnya, app py ), anda dapat mengimpor modul aplikasi flask bersama dengan konfigurasi parse anda from flask import flask, request, jsonify import parse config # this ensures parse is already set up app = flask( name ) @app route('/') def index() return "hello, flask + back4app!" if name == ' main ' app run(debug=true) # the debug mode helps in local development server dengan menyelesaikan langkah ini, anda telah membangun koneksi yang aman antara rute front end flask anda dan backend back4app semua permintaan dan transaksi data dialirkan dengan aman melalui kode python parse, mengurangi kompleksitas panggilan rest atau graphql manual (meskipun anda masih dapat menggunakannya jika diperlukan) langkah 2 – menyiapkan database membuat model data sebelum kita mulai, mari kita bicarakan tentang menyiapkan database anda dapat merancang skema data anda di dasbor back4app atau membiarkan parse membuatnya secara otomatis misalnya, anda mungkin membuat kelas bernama “todo” dengan bidang seperti title dan iscompleted navigasikan ke bagian “database” di dasbor back4app anda buat kelas baru (misalnya, “todo”) dan tambahkan kolom yang relevan, seperti title (string) dan iscompleted (boolean) back4app mendukung berbagai jenis data, seperti string , number , boolean , object , date , file , pointer , array , relation , geopoint , dan polygon anda dapat memilih jenis yang sesuai untuk setiap field membuat model data menggunakan ai agent jika anda lebih suka pendekatan otomatis, anda juga dapat menggunakan ai agent dari back4app buka ai agent dari dashboard aplikasi anda deskripsikan model data anda dalam bahasa sederhana (misalnya, “buat kelas todo dengan field title dan iscompleted di back4app ”) biarkan ai agent membuat skema untuk anda membaca dan menulis data menggunakan sdk di flask, anda dapat membuat dan mengambil data dengan mengimpor parse dari parse config py inisialisasi anda from flask import flask, request, jsonify import parse import parse config app = flask( name ) @app route('/create todo', methods=\['post']) def create todo() data = request get json() # import json to parse the payload title = data get('title') is completed = data get('iscompleted', false) todo = parse object factory('todo') todo item = todo() todo item title = title todo item iscompleted = is completed try saved todo = todo item save() return jsonify({"success" true, "objectid" saved todo objectid}), 200 except exception as e return jsonify({"error" str(e)}), 400 @app route('/fetch todos', methods=\['get']) def fetch todos() todo = parse object factory('todo') query = todo query try todos = query find() \# convert to json compatible response results = \[{"objectid" t objectid, "title" t title, "iscompleted" t iscompleted} for t in todos] return jsonify(results), 200 except exception as e return jsonify({"error" str(e)}), 400 if name == ' main ' app run(debug=true) file aplikasi flask ini menangani permintaan http untuk membuat dan membaca item todo di database back4app anda membaca dan menulis data menggunakan rest api jika anda lebih suka panggilan rest langsung, anda dapat menguji dengan curl dari baris perintah curl x post \\ h "x parse application id your application id" \\ h "x parse rest api key your rest api key" \\ h "content type application/json" \\ d '{"title" "buy groceries", "iscompleted" false}' \\ https //parseapi back4app com/classes/todo membaca dan menulis data menggunakan graphql api demikian pula, back4app menyediakan endpoint graphql misalnya mutation { createtodo(input { fields { title "clean the house" iscompleted false } }) { todo { objectid title iscompleted } } } bekerja dengan live queries (opsional) jika anda membutuhkan pembaruan waktu nyata , back4app menyediakan live queries dalam skenario flask, anda biasanya akan menggunakan pustaka langganan sisi klien atau sisi server terpisah yang dapat mempertahankan koneksi websocket ke server live query back4app aktifkan live queries di dasbor back4app anda di bawah pengaturan server aplikasi anda gunakan klien parse livequery yang terhubung ke wss\ //your subdomain here b4a io dan mendengarkan peristiwa buat/perbarui/hapus langkah 3 – menerapkan keamanan dengan acl dan clp gambaran singkat back4app menyediakan daftar kontrol akses (acl) dan izin tingkat kelas (clp) untuk mengunci data acl berlaku untuk objek individu, sementara clp berlaku untuk seluruh kelas ini membantu anda membatasi atau mengizinkan operasi baca/tulis per pengguna, peran, atau publik mengatur izin tingkat kelas pergi ke dasbor back4app anda , pilih aplikasi anda, dan buka database bagian pilih kelas (misalnya, “todo”) buka izin tingkat kelas tab konfigurasikan default anda, seperti “memerlukan autentikasi” atau “tidak ada akses ” mengonfigurasi acl dalam kode anda dapat menerapkan acl dalam kode python @app route('/create private todo', methods=\['post']) def create private todo() data = request get json() user id = data get('userid') title = data get('title') \# assume you have a pointer to the user or a way to get user from id parseuser = parse user user query = parseuser query user obj = user query get(user id) todo = parse object factory('todo') todo item = todo() todo item title = title acl = parse acl() acl setreadaccess(user obj, true) acl setwriteaccess(user obj, true) acl setpublicreadaccess(false) acl setpublicwriteaccess(false) todo item acl = acl saved todo = todo item save() return jsonify({"success" true, "objectid" saved todo objectid}), 200 langkah 4 – menulis fungsi cloud code mengapa cloud code cloud code sangat cocok untuk menjalankan kode python (atau javascript dalam skenario lain) di sisi server, sehingga anda tidak perlu meng host infrastruktur anda sendiri anda dapat menjalankan tugas seperti memvalidasi data, melakukan perhitungan kompleks, atau mengintegrasikan dengan layanan eksternal langsung dari server parse contoh fungsi karena lingkungan cloud code default untuk back4app menggunakan node js, anda akan menulis cloud code anda dalam javascript namun, anda masih dapat memicu skrip sisi server ini dari aplikasi flask anda misalnya, fungsi cloud node js mungkin terlihat seperti 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 gunakan back4app cli https //www back4app com/docs/local development/parse cli untuk menerapkan cloud code anda \# step 1 install the cli curl https //raw\ githubusercontent com/back4app/parse cli/back4app/installer sh | sudo /bin/bash \# step 2 configure your account key b4a configure accountkey \# step 3 deploy your code b4a deploy sebagai alternatif, anda dapat menerapkan melalui dasbor back4app dengan menempelkan kode js anda ke cloud code > functions dan mengklik “terapkan ” memanggil fungsi anda dalam flask, anda dapat memanggil fungsi cloud itu menggunakan rest import requests @app route('/text length', methods=\['post']) def get text length() data = request get json() text = data get('text') url = "https //parseapi back4app com/functions/calculatetextlength" headers = { "x parse application id" "your app id", "x parse rest api key" "your rest api key", "content type" "application/json" } payload = {"text" text} response = requests post(url, json=payload, headers=headers) return jsonify(response json()), response status code langkah 5 – mengonfigurasi autentikasi aktifkan atau atur autentikasi pengguna di dasbor back4app back4app memanfaatkan user kelas secara default parse menangani hashing kata sandi, token sesi, dan penyimpanan yang aman anda dapat mengelola fitur fitur ini di pengaturan aplikasi anda contoh kode @app route('/signup', methods=\['post']) def sign up user() data = request get json() username = data get('username') password = data get('password') email = data get('email') user = parse user() user username = username user password = password user email = email try user sign up() return jsonify({"success" true}), 200 except exception as e return jsonify({"error" str(e)}), 400 @app route('/login', methods=\['post']) def log in user() data = request get json() username = data get('username') password = data get('password') try parse user login(username, password) return jsonify({"success" true}), 200 except exception as e return jsonify({"error" str(e)}), 400 login sosial back4app dan parse dapat terintegrasi dengan penyedia sosial seperti google, apple, atau facebook detail pengaturan bervariasi, jadi silakan merujuk ke dokumen login sosial parse https //www back4app com/docs/platform/sign in with apple langkah 6 – menangani penyimpanan file mengatur penyimpanan file anda dapat mengunggah file ke database parse anda dari flask dengan membuat sebuah parse file() objek di lingkungan berbasis node, atau anda dapat menggunakan panggilan rest langsung dari python jika anda menyimpan referensi ke file file ini di kelas anda, file file tersebut menjadi mudah diambil @app route('/upload file', methods=\['post']) def upload file() file = request files\['file'] # from an html form or an api call file name = file filename url = "https //parseapi back4app com/files/" + file name headers = { "x parse application id" "your app id", "x parse rest api key" "your rest api key", "content type" file content type } response = requests post(url, data=file read(), headers=headers) return jsonify(response json()), response status code contoh setelah mengunggah file, anda akan menerima url file yang dapat anda simpan di database anda anda kemudian dapat merender atau mereferensikan file tersebut di template html sesuai kebutuhan langkah 7 – verifikasi email dan reset kata sandi ikhtisar verifikasi email memastikan alamat email yang valid, dan reset kata sandi membantu pengguna mendapatkan kembali akses akun dengan aman konfigurasi dashboard back4app pergi ke pengaturan email anda di dashboard back4app aktifkan verifikasi email dan konfigurasi template email aktifkan reset kata sandi untuk mengirim tautan pemulihan kata sandi ke email pengguna kode/implementasi setelah diaktifkan, setiap pengguna baru yang mendaftar dengan email akan menerima tautan verifikasi untuk reset kata sandi, anda dapat memanggil metode bawaan parse melalui rest atau dari rute flask anda langkah 8 – penjadwalan tugas dengan cloud jobs apa yang dilakukan cloud jobs pekerjaan cloud memungkinkan anda untuk menjadwalkan tugas latar belakang seperti membersihkan data atau mengirim email berkala misalnya, anda dapat menghapus catatan lama setiap hari tanpa intervensi pengguna 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); } }); kemudian, dari dasbor back4app anda pergi ke pengaturan aplikasi > pengaturan server > pekerjaan latar belakang jadwalkan pekerjaan ini untuk dijalankan setiap hari atau pada interval yang anda pilih langkah 9 – mengintegrasikan webhook definisi webhooks memungkinkan aplikasi back4app anda mengirim data ke layanan eksternal setiap kali pemicu tertentu terjadi ini berguna untuk integrasi dengan gateway pembayaran, slack, analitik, atau layanan pihak ketiga lainnya konfigurasi navigasikan ke konfigurasi webhooks di dasbor back4app anda > lainnya > webhooks tambahkan webhook baru atur endpoint (misalnya, https //your external service com/webhook endpoint https //your external service com/webhook endpoint ) pilih pemicu yang akan memicu webhook contoh jika anda ingin memberi tahu saluran slack setiap kali catatan baru dibuat di “todo,” atur url webhook slack kemudian, setiap kali todo baru disimpan, slack akan menerima permintaan post yang berisi detailnya langkah 10 – menjelajahi panel admin back4app aplikasi admin back4app menyediakan antarmuka yang ramah pengguna untuk anggota tim anda yang tidak teknis ini adalah antarmuka yang berbasis model untuk operasi crud dan tugas tingkat perusahaan di mana menemukannya pergi ke dasbor aplikasi anda pilih lainnya > aplikasi admin dan aktifkan buat pengguna admin dan pilih subdomain untuk meng host panel setelah diaktifkan, anda dapat masuk dengan kredensial admin anda untuk mengelola data dengan lebih nyaman—tanpa menulis endpoint atau kueri khusus dalam kode python anda kesimpulan dengan mengikuti tutorial komprehensif ini, anda telah membuat backend yang aman untuk aplikasi flask di back4app mengonfigurasi database dengan skema kelas, tipe data, dan hubungan mengintegrasikan kueri waktu nyata (kueri langsung) untuk pembaruan data segera menerapkan langkah langkah keamanan menggunakan acl dan clp untuk melindungi dan mengelola akses data menerapkan fungsi cloud code untuk menjalankan logika bisnis kustom di sisi server mengatur otentikasi pengguna dengan dukungan untuk verifikasi email dan pengaturan ulang kata sandi mengelola unggahan file dan pengambilan, dengan kontrol keamanan file opsional menjadwalkan pekerjaan cloud untuk tugas latar belakang otomatis menggunakan webhooks untuk mengintegrasikan dengan layanan eksternal menjelajahi panel admin back4app untuk manajemen data dengan framework backend flask yang solid yang dapat mengembalikan file template render (jika diinginkan) dan pengaturan back4app yang kuat, anda sekarang dilengkapi untuk mengembangkan aplikasi yang kaya fitur, dapat diskalakan, dan aman anda dapat menjalankan perintah flask run untuk memulai server pengembangan dan melanjutkan pengkodean baris perintah tugas menjadi sederhana dengan metode pasca def rute yang menerima payload json langkah selanjutnya bangun aplikasi flask yang siap produksi dengan memperluas backend ini untuk menangani model data yang lebih kompleks, strategi caching, dan optimasi kinerja integrasikan fitur fitur canggih seperti alur otentikasi khusus, kontrol akses berbasis peran, atau api eksternal (seperti gerbang pembayaran) periksa dokumentasi resmi back4app untuk penjelasan lebih dalam tentang keamanan canggih, penyetelan kinerja, dan analisis log jelajahi tutorial lainnya tentang aplikasi obrolan waktu nyata, dasbor iot, atau layanan berbasis lokasi anda dapat menggabungkan teknik yang dipelajari di sini dengan api pihak ketiga untuk membuat aplikasi kompleks di dunia nyata