Quickstarters
Feature Overview
How to Build a Backend for Dart?
24 นาที
บทนำ ในบทเรียนนี้ คุณจะได้เรียนรู้ วิธีการสร้างแบ็กเอนด์สำหรับ dart โดยใช้ back4app เราจะมุ่งเน้นไปที่การรวมฟีเจอร์ที่สำคัญของ back4app—เช่น การจัดการฐานข้อมูล, ฟังก์ชัน cloud code, rest และ graphql apis, การตรวจสอบสิทธิ์ผู้ใช้, และการสอบถามแบบเรียลไทม์ (live queries)—เข้ากับโปรเจกต์ที่ใช้ dart เนื่องจาก dart เป็นภาษาการเขียนโปรแกรมที่หลากหลาย คุณสามารถใช้มันสำหรับโปรเจกต์แบ็กเอนด์ต่างๆ ตั้งแต่เซิร์ฟเวอร์เว็บง่ายๆ ไปจนถึงแอปพลิเคชันขนาดใหญ่ โดยการใช้ประโยชน์จากสภาพแวดล้อมที่ใช้งานง่ายของ back4app คุณจะสามารถตั้งค่าเฟรมเวิร์กแบ็กเอนด์ที่แข็งแกร่งและปลอดภัยได้อย่างรวดเร็วโดยไม่ต้องบำรุงรักษาเซิร์ฟเวอร์มาก คุณจะเห็นว่าฟีเจอร์ต่างๆ เช่น acls, clps, การกำหนดเวลางานพื้นหลัง, และการสร้างตรรกะที่กำหนดเองด้วย cloud code ช่วยให้การดำเนินงานด้านเซิร์ฟเวอร์ของคุณมีประสิทธิภาพมากขึ้น หลังจากที่คุณทำบทเรียนนี้เสร็จแล้ว คุณจะพร้อมที่จะขยายแบ็กเอนด์ dart ของคุณหรือเพิ่มการรวมที่ซับซ้อนมากขึ้น ข้อกำหนดเบื้องต้น ในการทำตามบทแนะนำนี้ คุณจะต้องมี บัญชี back4app และโครงการ back4app ใหม่ เริ่มต้นใช้งาน back4app https //www back4app com/docs/get started/new parse app หากคุณไม่มีบัญชี คุณสามารถสร้างบัญชีได้ฟรี สภาพแวดล้อมการพัฒนา dart พื้นฐาน คุณสามารถตั้งค่านี้ได้โดยการติดตั้ง dart sdk และโปรแกรมแก้ไขใด ๆ ที่คุณเลือก สำหรับข้อมูลเพิ่มเติม โปรดดูที่ รับ dart sdk https //dart dev/get dart dart 2 0 หรือสูงกว่า ตรวจสอบให้แน่ใจว่าสภาพแวดล้อมของคุณเป็นปัจจุบัน เพื่อที่คุณจะได้ใช้ประโยชน์จากฟีเจอร์ dart ล่าสุดและแพ็คเกจ shelf หรือไลบรารีฝั่งเซิร์ฟเวอร์อื่น ๆ ความคุ้นเคยกับ dart และแนวคิดด้านแบ็คเอนด์ หากคุณเป็นมือใหม่ใน dart ให้ตรวจสอบ เอกสารประกอบอย่างเป็นทางการของ dart https //dart dev/guides เพื่อสร้างความคล่องแคล่วพื้นฐาน ตรวจสอบให้แน่ใจว่าคุณมีข้อกำหนดเบื้องต้นทั้งหมดนี้ก่อนที่คุณจะเริ่ม การมีโครงการ back4app ของคุณพร้อมและสภาพแวดล้อม dart ในเครื่องของคุณถูกกำหนดค่าอย่างถูกต้องจะช่วยให้คุณติดตามได้ง่ายขึ้น ขั้นตอนที่ 1 – การสร้างโครงการใหม่บน back4app และการเชื่อมต่อ ทำไมต้องสร้างโครงการ back4app ใหม่? โครงการ back4app ใหม่เป็นพื้นฐานของแบ็คเอนด์ของคุณ จัดการฐานข้อมูล ความปลอดภัย api การจัดเก็บไฟล์ และอื่น ๆ มันให้โครงสร้างที่เป็นระเบียบในการสร้างตรรกะฝั่งเซิร์ฟเวอร์ที่ใช้ dart ของคุณ การสร้างโครงการ back4app เข้าสู่ระบบบัญชี back4app ของคุณ คลิก “แอปใหม่” ในแดชบอร์ด back4app ตั้งชื่อแอปของคุณให้มีความหมาย (เช่น “dart backend tutorial”) เมื่อสร้างเสร็จแล้ว โครงการของคุณจะปรากฏในแดชบอร์ด back4app โครงการนี้คือที่ที่คุณจะกำหนดค่าการตั้งค่าทั้งหมดสำหรับแอปพลิเคชัน dart ของคุณ ติดตั้ง parse sdk และเชื่อมต่อ ในขณะที่ dart ไม่มี parse sdk อย่างเป็นทางการ แต่มีไลบรารีที่ดูแลโดยชุมชนเช่น parse server sdk ที่ช่วยให้การรวม back4app เป็นไปได้ คุณสามารถเพิ่มมันได้โดยการรวมการพึ่งพาต่อไปนี้ใน pubspec yaml dependencies parse server sdk ^4 0 0 # example version จากนั้นรัน dart pub get เริ่มต้น parse ในโค้ด dart ของคุณ (เช่น ใน main dart ไฟล์) import 'package\ parse server sdk/parse server sdk dart'; future\<void> main() async { const keyapplicationid = 'your application id'; const keyclientkey = 'your javascript key'; const keyparseserverurl = 'https //parseapi back4app com'; await parse() initialize( keyapplicationid, keyparseserverurl, clientkey keyclientkey, autosendsessionid true, ); // your dart server logic goes here print('parse initialized with back4app!'); } ดึง application id , javascript key , และ parse server url จากแดชบอร์ด back4app (ภายใต้ “app settings” > “security & keys”) ด้วยขั้นตอนนี้ แอปพลิเคชัน dart ของคุณสามารถโต้ตอบกับเฟรมเวิร์กแบ็กเอนด์ back4app ได้อย่างปลอดภัย ขั้นตอนที่ 2 – การตั้งค่าฐานข้อมูล สร้างโมเดลข้อมูล ในแดชบอร์ด back4app ให้ไปที่ส่วน “ฐานข้อมูล” และสร้างคลาสใหม่ (เช่น “todo”) เพิ่มคอลัมน์สำหรับฟิลด์ของคุณ เช่น title (string) และ iscompleted (boolean) สร้างโมเดลข้อมูลโดยใช้ ai agent เปิด ai agent ในแดชบอร์ดแอปของคุณ อธิบายสคีมาที่คุณต้องการ (เช่น “กรุณาสร้างคลาส todo ที่มีฟิลด์ title และ iscompleted ”) ให้ ai agent สรุปสคีมาสำหรับคุณ การอ่านและเขียนข้อมูลโดยใช้ sdk ด้วยไลบรารี parse server sdk คุณสามารถบันทึกและค้นหาข้อมูลจากโค้ด dart ของคุณ ตัวอย่างเช่น import 'package\ parse server sdk/parse server sdk dart'; future\<parseobject?> createtodoitem(string title, bool iscompleted) async { final todo = parseobject('todo') set('title', title) set('iscompleted', iscompleted); final response = await todo save(); if (response success && response result != null) { print('todo created ${response result}'); return response result as parseobject; } else { print('error creating todo ${response error? message}'); return null; } } future\<list\<parseobject>?> fetchtodos() async { final query = querybuilder\<parseobject>(parseobject('todo')); final response = await query query(); if (response success && response results != null) { return response results as list\<parseobject>; } else { print('error fetching todos ${response error? message}'); return null; } } การอ่านและเขียนข้อมูลโดยใช้ rest api 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 การอ่านและเขียนข้อมูลโดยใช้ graphql api mutation { createtodo(input { fields { title "clean the house" iscompleted false } }) { todo { objectid title iscompleted } } } การทำงานกับ live queries (ตัวเลือก) เพื่อเปิดใช้งานการอัปเดตแบบเรียลไทม์ ให้เปิด live queries ในแดชบอร์ด back4app ของคุณ (การตั้งค่าเซิร์ฟเวอร์) จากนั้นคุณสามารถสมัครสมาชิกจาก dart ได้ แม้ว่าคุณอาจต้องการไลบรารีเฉพาะ parse server sdk อาจมีการสนับสนุน live query บางส่วน ตรวจสอบเอกสารสำหรับรายละเอียด ขั้นตอนที่ 3 – การใช้ความปลอดภัยด้วย acls และ clps ภาพรวม acls (access control lists) จำกัดการอ่าน/เขียนที่ระดับวัตถุ clps (class level permissions) จำกัดการอ่าน/เขียนที่ระดับคลาส ขั้นตอนทีละขั้นตอน class level permissions ในแดชบอร์ด back4app ให้เปิดส่วนฐานข้อมูล เลือกคลาส และกำหนด clps ภายใต้ “ความปลอดภัย ” acls ในโค้ด (ใช้ parse server sdk) future\<parseobject?> createprivatetodo(string title, parseuser owneruser) async { final todo = parseobject('todo') set('title', title); final acl = \<string, dynamic>{}; // grant read/write to the owner acl\[owneruser objectid!] = {"read" true, "write" true}; // disable public read/write acl\[' '] = {"read" false, "write" false}; todo setacl(acl); final response = await todo save(); if (response success && response result != null) { return response result as parseobject; } else { print('error setting acl ${response error? message}'); return null; } } ขั้นตอนที่ 4 – การเขียนฟังก์ชัน cloud code ทำไมต้องใช้ cloud code cloud code เป็นสิ่งสำคัญสำหรับการสร้างตรรกะทางธุรกิจที่กำหนดเองในฝั่งเซิร์ฟเวอร์ มันช่วยให้คุณไม่ต้องจัดการโครงสร้างพื้นฐานของคุณเองและทำให้โค้ดของคุณปลอดภัยและปรับขนาดได้ ฟังก์ชันตัวอย่างและทริกเกอร์ ในไฟล์ของคุณ main js (สำหรับ cloud code) // main js parse cloud define('hellodart', (request) => { return `hello from dart and back4app, ${request params name || 'guest'}!`; }); parse cloud beforesave('todo', (request) => { const todo = request object; if (!todo get('title')) { throw 'each todo needs a title!'; } }); การปรับใช้ ใช้ back4app cli ใช้แดชบอร์ด ไปที่ cloud code > ฟังก์ชัน วางโค้ดของคุณลงใน main js คลิก deploy npm และ cloud code หากคุณต้องการโมดูล npm เพิ่มเติมสำหรับ cloud code ของคุณ ให้ระบุใน package json สิ่งนี้ช่วยให้คุณสามารถรวม api ภายนอกหรือการดำเนินการขั้นสูงโดยตรงจากโค้ดฝั่งเซิร์ฟเวอร์ของคุณ ขั้นตอนที่ 5 – การกำหนดค่าการตรวจสอบสิทธิ์ เปิดใช้งานการตรวจสอบสิทธิ์ผู้ใช้ ในแดชบอร์ด back4app คุณสามารถเปิดใช้งานการตรวจสอบอีเมลหรือจัดตั้งการเข้าสู่ระบบผ่านโซเชียล โดยค่าเริ่มต้น คลาสผู้ใช้ parse จะเก็บรหัสผ่านอย่างปลอดภัย ตัวอย่างโค้ด (ใช้ parse server sdk ใน dart) import 'package\ parse server sdk/parse server sdk dart'; future\<void> signupuser(string username, string password, string email) async { final user = parseuser(username, password, email); final response = await user signup(); if (response success) { print('user signed up ${response result}'); } else { print('error ${response error? message}'); } } future\<void> loginuser(string username, string password) async { final user = parseuser(username, password, null); final response = await user login(); if (response success) { print('user logged in ${response result}'); } else { print('error ${response error? message}'); } } การเข้าสู่ระบบด้วยโซเชียล กำหนดค่าผู้ให้บริการเช่น google, apple, หรือ facebook ภายในแดชบอร์ด back4app ดำเนินการติดตั้งปลั๊กอิน parse server sdk ที่เกี่ยวข้องหรือกระบวนการ oauth ที่กำหนดเองหากมี ขั้นตอนที่ 6 – การจัดการการจัดเก็บไฟล์ การตั้งค่าการจัดเก็บไฟล์ back4app จะโฮสต์ไฟล์ที่คุณอัปโหลดผ่าน parse apis โดยอัตโนมัติ คุณสามารถจัดเก็บภาพ เอกสาร หรือไฟล์ประเภทใดก็ได้ ตัวอย่าง (dart) ข้อควรพิจารณาด้านความปลอดภัย คุณสามารถควบคุมว่าใครสามารถอัปโหลดหรือดึงไฟล์ได้โดยการปรับ clps หรือบทบาทผู้ใช้ในแดชบอร์ด back4app ขั้นตอนที่ 7 – การตรวจสอบอีเมลและการรีเซ็ตรหัสผ่าน ภาพรวม การตรวจสอบอีเมลยืนยันว่าผู้ใช้เป็นเจ้าของอีเมลที่ลงทะเบียน ขณะที่ลิงก์การรีเซ็ตรหัสผ่านให้วิธีการที่ปลอดภัยในการจัดการข้อมูลประจำตัวที่หายไป การกำหนดค่าคอนโซล back4app ไปที่ การตั้งค่าแอป > อีเมล เปิดใช้งาน ตรวจสอบอีเมลผู้ใช้ และ รีเซ็ตรหัสผ่าน ปรับแต่งเทมเพลตอีเมลของคุณตามต้องการ การดำเนินการ เมื่อผู้ใช้ลงทะเบียนด้วยอีเมลที่ถูกต้อง พวกเขาจะได้รับลิงก์การตรวจสอบอีเมล สำหรับการรีเซ็ตรหัสผ่าน ให้เรียกใช้วิธี requestpasswordreset ของ parseuser (หากมีใน parse server sdk) หรือจุดสิ้นสุด rest ขั้นตอนที่ 8 – การกำหนดตารางงานด้วย cloud jobs cloud jobs ทำอะไร cloud jobs ช่วยให้คุณกำหนดตารางงานในช่วงเวลาที่กำหนด เช่น การทำความสะอาดบันทึกเก่าหรือการส่งรายงานตามระยะเวลา พวกเขาทำงานในพื้นหลัง โดยไม่ขึ้นกับการกระทำที่กระตุ้นโดยผู้ใช้ ตัวอย่าง ใน 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); } }); การจัดตารางเวลา ไปที่ การตั้งค่าแอป > การตั้งค่าเซิร์ฟเวอร์ > งานพื้นหลัง กำหนดเวลา cleanupoldtodos ให้ทำงานทุกวันหรือในช่วงเวลาที่คุณเลือก ขั้นตอนที่ 9 – การรวม webhooks คำจำกัดความ webhooks ช่วยให้แอป back4app ของคุณสามารถทำการร้องขอ http ไปยังบริการภายนอกในเหตุการณ์บางอย่าง นี่มีประโยชน์สำหรับการรวมกับบริการของบุคคลที่สาม เช่น slack หรือ stripe การกำหนดค่า ไปที่ เพิ่มเติม > webhooks ในแดชบอร์ด back4app ของคุณ คลิก เพิ่ม webhook และระบุ endpoint (เช่น https //your external service com/webhook endpoint ) ระบุเหตุการณ์ที่กระตุ้น (เช่น หลังจากที่ todo ถูกสร้างขึ้น) ตัวอย่าง หากคุณมี url webhook ของ slack คุณสามารถกำหนดค่าให้รับการแจ้งเตือนเมื่อมี todo ใหม่ถูกเพิ่มเข้ามา การเชื่อมต่อที่ราบรื่นระหว่างแบ็กเอนด์ dart ของคุณและเครื่องมือภายนอกช่วยเพิ่มการทำงานอัตโนมัติ ขั้นตอนที่ 10 – สำรวจแผงผู้ดูแล back4app หาที่ตั้ง ในคอนโซล back4app ของคุณ ให้เปิด เพิ่มเติม > แอปผู้ดูแล และเปิดใช้งานแผง ฟีเจอร์ จัดการบันทึกฐานข้อมูลได้อย่างง่ายดาย ตรวจสอบบันทึก งานเบื้องหลัง และการวิเคราะห์ ควบคุมการเข้าถึงและบทบาทของผู้ใช้ บทสรุป โดยการทำตามขั้นตอนเหล่านี้ คุณได้ สร้างแบ็คเอนด์ที่ปลอดภัยสำหรับ dart บน back4app จัดการฐานข้อมูลของคุณ ผ่านคลาสและฟิลด์ของ parse สร้างโค้ดคลาวด์ที่กำหนดเอง เพื่อจัดการกับตรรกะฝั่งเซิร์ฟเวอร์ รักษาความปลอดภัยข้อมูล โดยใช้ acls, clps, และการตรวจสอบสิทธิ์ผู้ใช้ กำหนดตารางงานพื้นหลัง ด้วย cloud jobs รวมบริการภายนอก โดยใช้ webhooks สำรวจแผงผู้ดูแลระบบ เพื่อการจัดการข้อมูลที่ง่าย พื้นฐานที่มั่นคงนี้เตรียมคุณให้พร้อมในการปรับใช้โปรเจกต์ dart อย่างมีประสิทธิภาพ ไม่ว่าคุณจะสร้างเซิร์ฟเวอร์เว็บขนาดเต็ม ไมโครเซอร์วิส หรือแอปพลิเคชันเฉพาะทาง จากที่นี่ คุณสามารถขยายกรอบงานด้านหลังของคุณ เพิ่มตรรกะที่ซับซ้อนมากขึ้น หรือรวมฟีเจอร์ขั้นสูง เช่น การแจ้งเตือนแบบพุชหรือการวิเคราะห์ขั้นสูง ขั้นตอนถัดไป สำรวจความพร้อมในการผลิต ใช้กลยุทธ์การแคช จัดการความพร้อมกัน และปรับแต่งประสิทธิภาพสำหรับการเข้าชมที่สูง รวมฟีเจอร์ขั้นสูง เช่น การควบคุมการเข้าถึงตามบทบาท การเข้าสู่ระบบทางสังคมเพิ่มเติม หรือเครื่องมือการทำงานร่วมกันแบบเรียลไทม์ ตรวจสอบเอกสารทางการของ back4app เพื่อข้อมูลเชิงลึกเกี่ยวกับบันทึก ความปลอดภัย และการปรับแต่งประสิทธิภาพ ทดลอง กับแพ็คเกจเพิ่มเติม เช่น แพ็คเกจ shelf เพื่อสร้างเซิร์ฟเวอร์เว็บที่กำหนดเองควบคู่ไปกับชั้นข้อมูลที่ใช้ parse โดยใช้ความสามารถของ dart ในการเป็นภาษาการเขียนโปรแกรมที่ยืดหยุ่น ด้วยความรู้เกี่ยวกับ วิธีการสร้างแบ็กเอนด์สำหรับ dart , คุณมีวิธีที่ทรงพลังในการจัดการข้อมูล ปกป้องกระบวนการด้านเซิร์ฟเวอร์ของคุณ และทำให้การทำงานของแอปของคุณเป็นอัตโนมัติ—ทั้งหมดนี้โดยไม่ต้องใช้โครงสร้างพื้นฐานที่สำคัญ