Quickstarters
Feature Overview
How to Build a Backend for Deno?
31 นาที
บทนำ ในบทเรียนนี้ คุณจะได้เรียนรู้วิธีการสร้างแบ็กเอนด์สำหรับ deno โดยใช้ back4app เราจะเดินผ่านทุกขั้นตอนเพื่อรวมฟีเจอร์หลักของ back4app—ฐานข้อมูล, rest apis, การตรวจสอบสิทธิผู้ใช้, การจัดเก็บไฟล์, และการสอบถามแบบสด—เข้ากับสภาพแวดล้อม deno คุณจะเห็นวิธีการสื่อสารกับ back4app ผ่าน rest endpoints และสร้างโครงสร้างพื้นฐานที่สมบูรณ์โดยไม่ต้องจัดการเซิร์ฟเวอร์ด้วยตัวเอง เมื่อคุณใช้ back4app คุณสามารถข้ามการกำหนดค่าเซิร์ฟเวอร์ด้วย deno ด้วยตนเอง ประหยัดเวลาและความพยายาม คุณจะมุ่งเน้นไปที่การเขียนโค้ดที่ง่ายขึ้น ขอบคุณห้องสมุดมาตรฐานของ deno และแนวทางสมัยใหม่ เมื่อสิ้นสุดคู่มือนี้เกี่ยวกับการสร้างแบ็กเอนด์สำหรับ deno คุณจะมีเส้นทางที่ชัดเจนในการรวมความปลอดภัยขั้นสูง, โค้ดคลาวด์, และงานที่กำหนดเวลาเข้ากับแอปพลิเคชัน deno ของคุณ เมื่อคุณทำการเรียนรู้บทแนะนำนี้เสร็จสิ้น คุณจะสามารถรันเซิร์ฟเวอร์ จัดการ rest apis รวมถึงการรวมการตรวจสอบผู้ใช้ การจัดเก็บไฟล์ และการกำหนดตารางงานได้อย่างง่ายดาย คุณจะเข้าใจวิธีการจัดการข้อมูลของคุณด้วยวิธีการ fetch ของ deno โดยใช้ back4app rest api ข้อกำหนดเบื้องต้น บัญชี back4app และโครงการ back4app ใหม่ เริ่มต้นใช้งาน back4app https //www back4app com/docs/get started/new parse app หากคุณไม่มีบัญชี คุณสามารถสร้างบัญชีได้ฟรี ใช้ลิงก์ด้านบนเพื่อเตรียมโครงการของคุณ ติดตั้ง deno คุณสามารถดาวน์โหลด deno ได้ที่ https //deno land https //deno land ติดตั้ง deno บนระบบปฏิบัติการของคุณและยืนยันด้วย deno version ความคุ้นเคยกับแนวคิดพื้นฐานของ deno เช่น โมดูล ระบบไฟล์ deno run allow net , หรือวิธีการนำเข้าโมดูลแอปพลิเคชันจากไลบรารีมาตรฐาน ความรู้พื้นฐานเกี่ยวกับ rest apis เราจะใช้การเรียก fetch และประเภทเนื้อหาของ headers สำหรับการจัดการข้อมูล ดังนั้นโปรดมั่นใจว่าคุณรู้พื้นฐานของ rest และ json โปรดตรวจสอบว่าคุณมีข้อกำหนดเบื้องต้นเหล่านี้ก่อนเริ่มต้น การตั้งค่าโครงการ back4app ของคุณและการรันสภาพแวดล้อม deno ในเครื่องของคุณจะช่วยให้คุณสามารถติดตามบทแนะนำนี้ได้อย่างราบรื่น ขั้นตอนที่ 1 – สร้างโครงการใหม่บน back4app และเชื่อมต่อ สร้างโครงการใหม่ พื้นฐานสำหรับ deno backend ของคุณคือโครงการ back4app หากคุณยังไม่ได้สร้าง เข้าสู่ระบบบัญชี back4app ของคุณ คลิกที่ปุ่ม “new app” ในแดชบอร์ด back4app ของคุณ ตั้งชื่อแอปของคุณ (เช่น “deno backend tutorial”) เมื่อโครงการของคุณพร้อมแล้ว มันจะปรากฏในแดชบอร์ด back4app ของคุณ โครงการนี้คือที่ที่คุณจะตั้งค่าฐานข้อมูล ความปลอดภัย และ apis เชื่อมต่อกับ back4app ผ่าน rest เนื่องจากเราไม่มี parse sdk สำหรับ deno เราจะใช้ rest api endpoints ของ back4app คุณสามารถค้นหา application id , rest api key , และ server url ใน app settings หรือ security & keys ของแอปของคุณ ตลอดทั้งบทแนะนำนี้ เราจะใช้ fetch เพื่อส่งคำขอจาก deno ไปยัง back4app อย่าลืมรวม api key และ headers content type ในแต่ละการเรียก ขั้นตอนที่ 2 – การตั้งค่าฐานข้อมูล ในขั้นตอนนี้ คุณจะสร้างโมเดลข้อมูลบน back4app และโต้ตอบกับมันโดยใช้ rest apis จาก deno การสร้างโมเดลข้อมูล ไปที่ส่วน “ฐานข้อมูล” ในแดชบอร์ด back4app ของคุณ คลิก “สร้างคลาสใหม่” และตั้งชื่อมัน เช่น “todo ” เพิ่มคอลัมน์ที่เกี่ยวข้อง (เช่น title (string), iscompleted (boolean)) คุณยังสามารถอนุญาตให้ parse สร้างคอลัมน์เหล่านี้โดยอัตโนมัติเมื่อมีการบันทึกข้อมูล การสร้างโมเดลข้อมูลด้วย ai agent ai agent ของ back4app สามารถออกแบบสคีมาของคุณได้ เปิด ai agent ในแดชบอร์ด back4app ของคุณ อธิบายโมเดลข้อมูลของคุณ (เช่น “สร้างคลาส todo ที่มีฟิลด์ชื่อ, คำอธิบาย, และ iscompleted ”) อนุญาตให้เอเจนต์สร้าง สคีมาโดยอัตโนมัติ นี่ช่วยให้คุณจัดการสคีมาที่ซับซ้อนได้อย่างรวดเร็ว การอ่านและเขียนข้อมูลโดยใช้ rest api จาก deno, คุณสามารถเรียกใช้เซิร์ฟเวอร์โดยการเรียก rest endpoints ด้วย fetch ตัวอย่างเช่น, เพื่อสร้าง todo // file called createtodo ts export async function createtodoitem(title string, iscompleted boolean) { const url = "https //parseapi back4app com/classes/todo"; const body = json stringify({ title, iscompleted }); const response = await fetch(url, { method "post", headers { "x parse application id" "your application id", "x parse rest api key" "your rest api key", "content type" "application/json", }, body, }); if (!response ok) { throw new error(`error saving todo ${response statustext}`); } const result = await response json(); return result; } to fetch todos // file called fetchtodos ts export async function fetchtodos() { const url = "https //parseapi back4app com/classes/todo"; const response = await fetch(url, { method "get", headers { "x parse application id" "your application id", "x parse rest api key" "your rest api key", }, }); if (!response ok) { throw new error(`error fetching todos ${response statustext}`); } const result = await response json(); return result; } you can run these with deno run allow net createtodo ts reading and writing data using graphql api back4app also provides a graphql endpoint https //parseapi back4app com/graphql // file called createtodographql ts export async function createtodographql(title string) { const mutation = ` mutation { createtodo(input { fields { title "${title}" iscompleted false } }) { todo { objectid title iscompleted } } } `; const response = await fetch("https //parseapi back4app com/graphql", { method "post", headers { "x parse application id" "your application id", "x parse rest api key" "your rest api key", "content type" "application/json", }, body json stringify({ query mutation }), }); const result = await response json(); return result; } ทำงานกับ live queries (ตัวเลือก) live queries จะอัปเดตคุณแบบเรียลไทม์ แต่ deno ไม่มีไลบรารี parse livequery แบบเนทีฟ คุณยังสามารถตั้งค่าฟีเจอร์ live query ในแดชบอร์ด back4app ของคุณสำหรับลูกค้าอื่น ๆ หรือใช้ websocket ใน deno เพื่อสมัครสมาชิกด้วยตนเอง สำหรับรายละเอียดเพิ่มเติม โปรดดูที่ เอกสาร live query https //www back4app com/docs/platform/live queries ขั้นตอนที่ 3 – การใช้ความปลอดภัยด้วย acls และ clps ภาพรวม acls (access control lists) และ clps (class level permissions) ของ back4app จะปกป้องข้อมูลของคุณ ใช้ clps เพื่อตั้งค่ากฎเริ่มต้นสำหรับทั้งคลาส จากนั้นใช้ acls สำหรับข้อจำกัดในระดับวัตถุ การตั้งค่าการอนุญาตในระดับคลาส เปิดฐานข้อมูล ในแดชบอร์ด back4app ของคุณ เลือกคลาส (เช่น “todo”) ไปที่การอนุญาตระดับคลาส แท็บ เปิดหรือปิดการเข้าถึงการอ่าน/เขียน สำหรับสาธารณะหรือสำหรับผู้ใช้ที่ได้รับการตรวจสอบตามความจำเป็น การกำหนดค่า acls เมื่อสร้างหรืออัปเดตวัตถุผ่าน rest คุณสามารถรวมคุณสมบัติ acl ในเนื้อหาคำขอได้ ตัวอย่างเช่น const body = json stringify({ title "private task", acl { " " { "read" false, "write" false }, "role\ admins" { "read" true, "write" true }, } }); ตัวอย่างนี้อนุญาตให้บทบาท “admins” เท่านั้นที่สามารถอ่านหรือเขียนได้ การเข้าถึงสาธารณะถูกปิด ขั้นตอนที่ 4 – การเขียนฟังก์ชัน cloud code ทำไมต้องใช้ cloud code cloud code คือที่ที่คุณเก็บตรรกะด้านเซิร์ฟเวอร์ที่ปลอดภัย คุณไม่ต้องจัดการเซิร์ฟเวอร์ด้วยตัวเอง คุณสามารถเพิ่มการตรวจสอบหรือทริกเกอร์สำหรับคลาสเฉพาะได้ ตัวอย่างฟังก์ชัน cloud code คุณสามารถกำหนดฟังก์ชัน cloud (ใน javascript) และนำไปใช้ในแอปของคุณ ตัวอย่างเช่น ฟังก์ชันเพื่อตรวจสอบความยาวของข้อความอาจเป็น parse cloud define("calculatetextlength", async (request) => { const { text } = request params; if (!text) { throw "text parameter is required"; } return { length text length }; }); การปรับใช้ คุณสามารถปรับใช้โค้ดผ่าน back4app cli https //www back4app com/docs/local development/parse cli หรือแผง cloud code ในแดชบอร์ด back4app ของคุณ npm บน cloud code คุณสามารถนำเข้าห้องสมุดภายนอกด้วย require() เมื่อปรับใช้แล้ว สภาพแวดล้อมของเซิร์ฟเวอร์จะทำงานพวกมัน นี่มีประโยชน์สำหรับงานที่ซับซ้อน แต่โปรดจำไว้ว่าการเรียกใช้จาก deno จะแยกจากสภาพแวดล้อม cloud code ของคุณบน back4app ขั้นตอนที่ 5 – การกำหนดค่าการรับรองความถูกต้อง เปิดใช้งานการรับรองความถูกต้อง back4app ใช้คลาสผู้ใช้ parse สำหรับการรับรองความถูกต้อง ขณะที่คุณทำงานกับ deno คุณสามารถเรียก rest endpoints เพื่อจัดการผู้ใช้ ลงทะเบียนและเข้าสู่ระบบโดยใช้ rest async function signupuser(username string, password string, email string) { const url = "https //parseapi back4app com/users"; const body = json stringify({ username, password, email }); const response = await fetch(url, { method "post", headers { "x parse application id" "your application id", "x parse rest api key" "your rest api key", "content type" "application/json", }, body, }); return await response json(); } async function loginuser(username string, password string) { const url = `https //parseapi back4app com/login?username=${username}\&password=${password}`; const response = await fetch(url, { method "get", headers { "x parse application id" "your application id", "x parse rest api key" "your rest api key", }, }); return await response json(); } การเข้าสู่ระบบด้วยโซเชียล คุณสามารถตั้งค่า google, facebook, apple และผู้ให้บริการอื่น ๆ บน back4app จากนั้นคุณจะเรียกใช้ endpoints ที่กำหนดด้วย oauth tokens ดู เอกสารการเข้าสู่ระบบด้วยโซเชียลของ back4app https //www back4app com/docs/platform/sign in with apple สำหรับรายละเอียด ขั้นตอนที่ 6 – การจัดการการจัดเก็บไฟล์ อัปโหลดและเรียกคืนไฟล์ ในการอัปโหลดไฟล์จาก deno ให้ใช้คำขอ post ไปที่ https //parseapi back4app com/files/\<filename> ตัวอย่างเช่น async function uploadfile(filedata uint8array, filename string) { const url = `https //parseapi back4app com/files/${filename}`; const response = await fetch(url, { method "post", headers { "x parse application id" "your application id", "x parse rest api key" "your rest api key", "content type" "image/png", }, body filedata, }); return await response json(); } คุณสามารถเก็บ url ของไฟล์ที่ได้ในวัตถุคลาสของคุณ วิธีนี้เหมาะสำหรับการเก็บภาพหรือเอกสารในขณะที่คุณรันเซิร์ฟเวอร์ใน deno ขั้นตอนที่ 7 – การตรวจสอบอีเมลและการรีเซ็ตรหัสผ่าน ภาพรวม การตรวจสอบอีเมลช่วยให้มั่นใจว่ามีการเข้าถึงที่ถูกต้อง การรีเซ็ตรหัสผ่านช่วยให้ผู้ใช้สามารถเข้าถึงได้อย่างปลอดภัย การตั้งค่าดashboard เปิดใช้งานการตรวจสอบอีเมล ในแดชบอร์ด back4app ของคุณภายใต้การตั้งค่าอีเมล ปรับแต่ง เทมเพลตการตรวจสอบของคุณ เปิดใช้งานการรีเซ็ตรหัสผ่าน และตั้งค่ารูปแบบอีเมลที่คุณต้องการ เมื่อผู้ใช้ลงทะเบียน พวกเขาจะได้รับลิงก์การตรวจสอบหากคุณเปิดใช้งานการตรวจสอบอีเมล สำหรับการรีเซ็ตรหัสผ่าน ให้เรียก rest endpoint post /requestpasswordreset ขั้นตอนที่ 8 – การกำหนดตารางงานด้วย cloud jobs ภาพรวมของ cloud jobs cloud jobs ทำงานเป็นระยะโดยไม่ต้องมีการแทรกแซงจากมนุษย์ ตัวอย่างเช่น คุณสามารถลบระเบียนเก่าได้ทุกวันหรือส่งการเตือนความจำทางอีเมลตามปกติ 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\ valueof() thirty days); query lessthan("createdat", cutoff); const oldtodos = await query find({ usemasterkey true }); await parse object destroyall(oldtodos, { usemasterkey true }); return `deleted ${oldtodos length} old todos `; }); หลังจากที่คุณได้ปรับใช้งานนี้แล้ว คุณสามารถกำหนดตารางงานใน app settings > server settings > background jobs บนแดชบอร์ด back4app ของคุณ ขั้นตอนที่ 9 – การรวม webhooks คำจำกัดความ webhook คือการเรียกกลับ http ที่ถูกกระตุ้นเมื่อเกิดเหตุการณ์ เช่น การสร้างหรืออัปเดตวัตถุ คุณสามารถรวมเข้ากับ slack, stripe หรือบริการภายนอกใด ๆ การกำหนดค่า เปิด “เพิ่มเติม” > “webhooks” ในแดชบอร์ด back4app คลิก “เพิ่ม webhook” และให้ข้อมูล endpoint ของบริการบุคคลที่สามของคุณ ตั้งค่า ว่าคุณต้องการส่งคำขอไปยังตัวกระตุ้นหรือคลาสใด สิ่งนี้ช่วยให้ระบบภายนอกได้รับข้อมูลเมื่อใดก็ตามที่คุณสร้างหรือแก้ไขวัตถุใน back4app ขั้นตอนที่ 10 – การสำรวจแผงผู้ดูแล back4app บทนำแผงผู้ดูแลระบบ ทีมที่ไม่ใช่เทคนิคสามารถใช้แผงนี้ในการจัดการข้อมูลได้อย่างมีวิสัยทัศน์ มันทำให้การดำเนินการ crud และการตรวจสอบข้อมูลง่ายขึ้น วิธีการเปิดใช้งาน ไปที่แดชบอร์ดแอป > เพิ่มเติม > แอปผู้ดูแลระบบ และเลือก “เปิดใช้งานแอปผู้ดูแลระบบ” สร้างผู้ใช้ผู้ดูแลระบบ เพื่อเข้าสู่ระบบ ตั้งค่าโดเมนย่อย สำหรับแอปผู้ดูแลระบบของคุณ คุณสามารถเข้าสู่ระบบแอปผู้ดูแลระบบเพื่อจัดการบันทึกอย่างปลอดภัย บทสรุป ในบทเรียนนี้ คุณได้ค้นพบวิธีการสร้างแบ็กเอนด์สำหรับ deno บน back4app คุณได้สร้างโมเดลข้อมูล จัดการการตรวจสอบผู้ใช้ เรียนรู้เกี่ยวกับ acls และ clps เพื่อความปลอดภัย และกำหนดตารางงาน cloud คุณยังได้เห็นวิธีการรวม api ภายนอกผ่านเว็บฮุกและวิธีการเรียกใช้เซิร์ฟเวอร์หรือ rest apis ด้วยคำสั่ง deno run allow net การตั้งค่านี้ช่วยให้คุณเริ่มต้นได้อย่างรวดเร็วโดยไม่ต้องกำหนดค่าระบบไฟล์หรือความซับซ้อนของไลบรารีมาตรฐานสำหรับสถาปัตยกรรมเซิร์ฟเวอร์ ขั้นตอนถัดไป ขยายแอป deno ของคุณ ด้วยจุดสิ้นสุดเพิ่มเติมและตรรกะขั้นสูงโดยใช้ cloud code รวมบริการเพิ่มเติม (เช่น เกตเวย์การชำระเงิน, การวิเคราะห์) กับข้อมูล back4app ของคุณ อ้างอิงเอกสารทางการของ back4app สำหรับเคล็ดลับการวิเคราะห์ความปลอดภัย ประสิทธิภาพ และบันทึกอย่างลึกซึ้ง ทดลอง กับฟีเจอร์เรียลไทม์ขั้นสูงหรือการจัดเก็บ kv ของ deno เชื่อมโยงข้อมูลระหว่างการทำงานของ deno ของคุณและสภาพแวดล้อมที่แข็งแกร่งของ back4app ด้วยความรู้ใหม่ของคุณ คุณสามารถปรับใช้แบ็กเอนด์ deno ที่ปลอดภัย ขยายได้ และเต็มไปด้วยฟีเจอร์ที่ได้รับการสนับสนุนจาก back4app ได้อย่างมั่นใจ