Quickstarters
Feature Overview
วิธีการสร้าง Backend สำหรับ Swift?
40 นาที
บทนำ ในบทเรียนนี้ คุณจะได้เรียนรู้วิธีการสร้างแบ็คเอนด์ที่สมบูรณ์สำหรับแอปพลิเคชัน swift โดยใช้ back4app เราจะเดินผ่านการรวมฟีเจอร์ที่สำคัญของ back4app—เช่น การจัดการฐานข้อมูล, ฟังก์ชัน cloud code, rest และ graphql apis, การตรวจสอบสิทธิ์ผู้ใช้, การสอบถามแบบเรียลไทม์ (live queries) และอื่นๆ—เพื่อสร้างแบ็คเอนด์ที่ปลอดภัย, ขยายขนาดได้, และแข็งแกร่งที่สื่อสารกับแอปไคลเอนต์ที่ใช้ swift ของคุณได้อย่างราบรื่น โดยการใช้ประโยชน์จากการตั้งค่าที่รวดเร็วและสภาพแวดล้อมที่ใช้งานง่ายของ back4app คุณจะลดเวลาและความพยายามที่จำเป็นลงอย่างมากเมื่อเปรียบเทียบกับการกำหนดค่าเซิร์ฟเวอร์และฐานข้อมูลด้วยตนเอง ในระหว่างทาง คุณจะได้รับประสบการณ์จริงกับฟังก์ชันการทำงานที่สำคัญ รวมถึงฟีเจอร์ความปลอดภัยขั้นสูง, การกำหนดตารางงานด้วย cloud jobs, และการตั้งค่าเว็บฮุกสำหรับการรวมภายนอก เมื่อสิ้นสุดการสอนนี้ คุณจะพร้อมที่จะพัฒนาบริการแบ็คเอนด์พื้นฐานนี้ให้เป็นแอปพลิเคชันที่พร้อมใช้งานในผลิตภัณฑ์ หรือรวมตรรกะที่กำหนดเองและ api ของบุคคลที่สามได้อย่างง่ายดายตามที่ต้องการ คุณจะเห็นว่าการทำงานกับแพลตฟอร์ม baas สามารถเปลี่ยนการพัฒนาแบ็คเอนด์ให้เป็นประสบการณ์ที่ราบรื่นยิ่งขึ้น โดยเฉพาะเมื่อสร้างแบ็คเอนด์ที่รวดเร็วหรือแอปแบ็คเอนด์อื่น ๆ มาลุยกันเถอะ! ข้อกำหนดเบื้องต้น ในการทำตามการสอนนี้ คุณจะต้องมี บัญชี back4app และโครงการ back4app ใหม่ เริ่มต้นใช้งาน back4app https //www back4app com/docs/get started/new parse app หากคุณยังไม่มีบัญชี คุณสามารถสร้างบัญชีได้ฟรี ทำตามคำแนะนำข้างต้นเพื่อเตรียมโครงการของคุณ สภาพแวดล้อมการพัฒนา swift คุณสามารถใช้ xcode https //developer apple com/xcode/ เป็น ide ของคุณในการสร้างแอปพลิเคชัน ios หรือ macos โดยใช้ swift ตรวจสอบให้แน่ใจว่าคุณติดตั้ง xcode เวอร์ชันที่เสถียรล่าสุดบนเครื่องของคุณ ความคุ้นเคยกับภาษาโปรแกรม swift หากคุณเป็นมือใหม่ใน swift ให้ตรวจสอบ เอกสาร swift https //swift org/documentation/ หรือการสอนสำหรับผู้เริ่มต้นก่อนเริ่ม parse swift sdk หากคุณใช้ cocoapods ให้เพิ่ม pod 'parseswiftog' ลงใน podfile ของคุณ หรือหากคุณใช้ swift package manager ให้เพิ่ม package(url "https //github com/netreconlab/parse swift git", from "5 0 0") ลงใน dependencies ของคุณ อ่านเพิ่มเติมใน เอกสาร parse swift https //docs parseplatform org/parse swift/guide/ ตรวจสอบให้แน่ใจว่าคุณมีข้อกำหนดเบื้องต้นทั้งหมดนี้ก่อนที่คุณจะเริ่มต้น การตั้งค่าโปรเจกต์ back4app ของคุณและเตรียมสภาพแวดล้อม swift ในเครื่องของคุณจะช่วยให้คุณติดตามได้ง่ายขึ้น ขั้นตอนที่ 1 – สร้างโปรเจกต์ใหม่บน back4app และเชื่อมต่อ ขั้นตอนแรกในการสร้างแบ็กเอนด์ swift ของคุณบน back4app คือการสร้างโปรเจกต์ใหม่ โปรเจกต์นี้เป็นพื้นฐานสำหรับการกำหนดค่าทั้งหมดที่กล่าวถึงในบทแนะนำนี้ swift สามารถเชื่อมต่อกับแบ็กเอนด์ใหม่ของคุณได้อย่างราบรื่นโดยใช้ parse swift sdk มาดูกันว่าเป็นอย่างไร สร้างโปรเจกต์ใหม่ เข้าสู่ระบบบัญชี back4app ของคุณ คลิกที่ปุ่ม “แอปใหม่” ในแดชบอร์ด back4app ของคุณ ตั้งชื่อแอปของคุณ (เช่น “swift backend tutorial”) หลังจากสร้างเสร็จ คุณจะเห็นแอปใหม่ที่แสดงในแดชบอร์ดของคุณ นี่คือที่ที่คุณจะกำหนดค่าฐานข้อมูล ฟังก์ชันคลาวด์ และการตั้งค่าที่สำคัญอื่นๆ สำหรับแอปแบ็กเอนด์ของคุณ เชื่อมต่อกับ parse swift sdk back4app ขับเคลื่อนโดย parse platform ซึ่งให้พื้นฐานสำหรับฐานข้อมูลของคุณ การอัปเดตแบบเรียลไทม์ การตรวจสอบสิทธิ์ และอื่นๆ แอปพลิเคชัน swift ของคุณสามารถเชื่อมต่อกับ back4app ได้โดยการติดตั้งและเริ่มต้นใช้งาน parse swift sdk ดึงคีย์ parse ของคุณ ในแดชบอร์ด back4app ของคุณ ไปที่ “การตั้งค่าแอป” หรือ “ความปลอดภัย & คีย์” เพื่อค้นหา application id และ client key คุณจะเห็น parse server url (มักจะเป็น https //parseapi back4app com ) ติดตั้ง parse swift sdk swift package manager (แนะนำ) dependencies \[ package(url "https //github com/netreconlab/parse swift git", from "5 0 0") ] cocoapods pod 'parseswiftog' เริ่มต้นใช้งาน parse ในแอปของคุณ คุณสามารถทำสิ่งนี้ในจุดเริ่มต้นหลักของโปรเจกต์ swift ของคุณ (เช่น, appdelegate swift หรือ @main ของ swiftui struct) ตัวอย่างเช่น import swiftui import parseswift @main struct myapp app { init() { // replace placeholders with your back4app credentials parseswift initialize( applicationid "your application id", clientkey "your client key", serverurl url(string "https //parseapi back4app com")! ) } var body some scene { windowgroup { contentview() } } } ด้วยการตั้งค่านี้ ลูกค้า swift ของคุณสามารถส่งคำขอที่ปลอดภัยไปยัง back4app ได้แล้ว คุณได้สร้างการเชื่อมต่อที่แข็งแกร่งซึ่งทำให้การดำเนินการข้อมูลง่ายขึ้นโดยไม่ต้องการการเรียก rest หรือ graphql ด้วยตนเอง (แม้ว่าคุณยังสามารถใช้ได้หากต้องการ) ขั้นตอนที่ 2 – การตั้งค่าฐานข้อมูล ในขั้นตอนนี้ คุณจะกำหนดค่าฐานข้อมูลแบ็คเอนด์ของคุณบน back4app และดูวิธีการจัดการข้อมูลจากโค้ด swift ของคุณ back4app ใช้โมเดลข้อมูล parse ซึ่งช่วยให้คุณเก็บวัตถุในโครงสร้างที่คล้ายกับคลาส swift สามารถโต้ตอบกับคลาสเหล่านี้ได้อย่างง่ายดายผ่าน parse swift sdk การสร้างโมเดลข้อมูล ไปที่ส่วน “ฐานข้อมูล” ในแดชบอร์ด back4app ของคุณ สร้างคลาสใหม่ (เช่น, “todo”) เพิ่มคอลัมน์ สำหรับข้อมูลที่คุณต้องการ เช่น “title” (string) และ “iscompleted” (boolean) คุณยังสามารถให้ parse swift sdk สร้างคอลัมน์เหล่านี้โดยอัตโนมัติในครั้งแรกที่คุณบันทึกวัตถุ ไม่ว่าทางใด สคีมาของคุณต้องตรงกับข้อมูลที่คุณจัดเก็บเพื่อให้แอปของคุณสามารถจัดการได้อย่างราบรื่น การสร้างโมเดลข้อมูลโดยใช้ ai agent back4app มี ai agent ที่สามารถช่วยคุณออกแบบโมเดลข้อมูลของคุณ เปิด ai agent จากแดชบอร์ดหรือเมนูแอปของคุณ อธิบายโมเดลข้อมูลของคุณ เป็นภาษาธรรมชาติ ตัวอย่างเช่น “กรุณาสร้างโปรเจกต์ swift ใหม่ที่มีสคีมาของคลาส todo ” ให้ ai agent สร้างสคีมา ให้คุณโดยอัตโนมัติ การอ่านและการเขียนข้อมูล parse swift sdk โดยใช้ parse swift sdk คุณสามารถสร้าง struct ที่สอดคล้องกับ parseobject เพื่อแทนข้อมูลของคุณ ตัวอย่างเช่น หากคุณมี todo คลาส import parseswift struct todo parseobject { // parseobject protocol properties var objectid string? var createdat date? var updatedat date? var acl parseacl? var originaldata data? // custom properties var title string? var iscompleted bool? } สร้างวัตถุ todo และบันทึก var newtodo = todo() newtodo title = "buy groceries" newtodo iscompleted = false task { do { let saved = try await newtodo save() print("saved ", saved) } catch { print("error saving todo ", error) } } เรียกดูรายการ todo ทั้งหมด task { do { let todos = try await todo query() find() print("todos ", todos) } catch { print("error fetching ", error) } } การอ่านและเขียนข้อมูล rest api หากคุณต้องการใช้คำขอ http มาตรฐาน คุณสามารถใช้ rest api ได้ ตัวอย่างเช่น การสร้าง todo ใหม่ 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" "walk the dog", "iscompleted" false}' \\ https //parseapi back4app com/classes/todo การอ่านและเขียนข้อมูล graphql api graphql ก็ได้รับการสนับสนุนเช่นกัน นี่คือตัวอย่างการเปลี่ยนแปลงเพื่อสร้าง todo mutation { createtodo(input { fields { title "finish homework" iscompleted false } }) { todo { objectid title iscompleted } } } ทำงานกับ live queries หากแอป swift ของคุณต้องการการอัปเดตแบบเรียลไทม์ back4app รองรับ live queries สำหรับ ios เปิดใช้งาน live queries ใน การตั้งค่าเซิร์ฟเวอร์ ของแอปของคุณ เชื่อมต่อ โดยระบุ parse livequeryserverurl ในแอปของคุณ parse configuration serverurl = url(string "https //parseapi back4app com")! parse configuration livequeryserverurl = url(string "wss\ //your subdomain b4a io")! สมัครสมาชิก เพื่อรับการอัปเดตแบบสด let subscription = todo query() subscribecallback { subscriptionstate in switch subscriptionstate { case subscribed(let querysubscription) print("subscribed to todo changes!") default break } } ตอนนี้ ทุกครั้งที่มีการสร้าง อัปเดต หรือ ลบ todo คุณจะได้รับการอัปเดตแบบเรียลไทม์ นี่เป็นสิ่งที่มีประโยชน์โดยเฉพาะสำหรับฟีเจอร์ที่ต้องทำงานร่วมกันหรือมีความสำคัญตามเวลาในพัฒนาการแบ็กเอนด์ swift ของคุณ ขั้นตอนที่ 3 – การใช้ความปลอดภัยด้วย acls และ clps acls และ clps คืออะไร? back4app ใช้ access control lists (acls) และ class level permissions (clps) เพื่อรักษาความปลอดภัยข้อมูลของคุณ acls ช่วยให้คุณกำหนดสิทธิ์ต่อวัตถุแต่ละรายการ ในขณะที่ clps ตั้งกฎการเข้าถึงเริ่มต้นสำหรับทั้งคลาส สิทธิ์ระดับคลาส ในแดชบอร์ด back4app ไปที่ ฐานข้อมูล และเลือกคลาส (เช่น “todo”) เปิด สิทธิ์ระดับคลาส กำหนดข้อจำกัดในการอ่าน เขียน หรือการเข้าถึงสาธารณะ access control lists (acls) เมื่อสร้างหรืออัปเดต parseobject ใน swift คุณสามารถตั้งค่า acl ได้ ตัวอย่างเช่น var acl = parseacl() // only let the current user read and write acl setreadaccess(userid "current user id", value true) acl setwriteaccess(userid "current user id", value true) var todo = todo() todo acl = acl นี่ทำให้แน่ใจว่าผู้ใช้ที่ระบุเท่านั้นที่สามารถอ่านหรือแก้ไขวัตถุได้ การรวม acls และ clps จะสร้างโมเดลความปลอดภัยที่แข็งแกร่งและมีหลายชั้นสำหรับข้อมูลในแอปของคุณ ขั้นตอนที่ 4 – การเขียนฟังก์ชัน cloud code ทำไมต้องใช้ cloud code? cloud code ช่วยให้คุณสามารถรันตรรกะ swift ฝั่งเซิร์ฟเวอร์ (หรือ javascript หากใช้สไตล์ cloud code ดั้งเดิม) โดยไม่เปิดเผยความลับต่อไคลเอนต์ มันเหมาะสำหรับการตรวจสอบ การกระตุ้น งานที่กำหนดเวลา และอื่น ๆ ฟังก์ชันตัวอย่าง นี่คือตัวอย่างที่ใช้ javascript แต่คุณยังสามารถทำงานใน typescript หรือเรียกจาก swift ได้ ในโฟลเดอร์ cloud code ของคุณ สร้าง main js parse cloud define("gettaskscount", async (request) => { const query = new parse query("todo") const count = await query count({ usemasterkey true }) return count }) parse cloud beforesave("todo", async (request) => { const todo = request object if (!todo get("title")) { throw "cannot save a todo without a title " } }) คุณอาจต้องการติดตั้งโมดูล npm โดยการรวมพวกเขาใน package json ไฟล์ และจากนั้นเรียกใช้พวกเขาใน main js เมื่อถูกนำไปใช้งาน คุณสามารถเรียกใช้ฟังก์ชันเหล่านี้จากโค้ด swift ของคุณโดยใช้ callfunction การนำไปใช้งาน นำโค้ด cloud ของคุณไปใช้งานผ่าน b4a deploy คุณยังสามารถนำไปใช้งานผ่านแดชบอร์ด back4app โดยไปที่ cloud code > functions วางโค้ดของคุณในตัวแก้ไขออนไลน์และคลิก deploy การเรียกใช้จาก swift task { do { let result = try await parsecloud callfunction("gettaskscount", with \[string any]\()) print("count ", result) } catch { print("error calling cloud function ", error) } } ขั้นตอนที่ 5 – การกำหนดค่าการตรวจสอบสิทธิ การเปิดใช้งานการตรวจสอบสิทธิ์ผู้ใช้ ใน แดชบอร์ด , คุณจะเห็น user คลาสเริ่มต้นสำหรับบัญชีผู้ใช้ เปิดใช้งานผู้ให้บริการการตรวจสอบสิทธิ์เพิ่มเติม (apple, facebook, google, ฯลฯ) ภายใต้ การตั้งค่าการตรวจสอบสิทธิ์ ของแอปของคุณหากจำเป็น การลงทะเบียนและเข้าสู่ระบบ (swift) struct user parseuser { var objectid string? var username string? var email string? var password string? var emailverified bool? var createdat date? var updatedat date? var acl parseacl? var originaldata data? } // sign up task { do { var newuser = user() newuser username = "alice" newuser password = "p\@ssword" let signedup = try await newuser signup() print("user signed up ", signedup) } catch { print("error signing up ", error) } } // log in task { do { let user = try await user login(username "alice", password "p\@ssword") print("logged in user ", user) } catch { print("error logging in ", error) } } การเข้าสู่ระบบด้วยโซเชียล back4app รองรับการเข้าสู่ระบบ oauth ด้วย google, apple และ facebook ตั้งค่าผู้ให้บริการเหล่านี้ใน การตั้งค่า และใช้โค้ดการรวม parse swift ที่เกี่ยวข้องในแอป swift ของคุณ (เช่น, parsefacebookutils หรือ parseappleutils ) เพื่อจัดการกับกระบวนการตรวจสอบสิทธิ์ สำหรับรายละเอียดเพิ่มเติม โปรดดูที่ เอกสารการเข้าสู่ระบบด้วยโซเชียล https //www back4app com/docs/platform/sign in with apple ขั้นตอนที่ 6 – การจัดการการจัดเก็บไฟล์ การตั้งค่าการจัดเก็บไฟล์ คุณสามารถเก็บภาพ วิดีโอ หรือไฟล์ใดๆ ใน back4app ใน swift คุณมี parsefile let imagedata = data(/ your image bytes /) let parsefile = parsefile(name "photo jpg", data imagedata) task { do { let savedfile = try await parsefile save() print("file saved ", savedfile url ?? "no url") } catch { print("error uploading file ", error) } } จากนั้นคุณสามารถแนบไฟล์นี้กับ parseobject และบันทึกได้ ดึง url ของไฟล์เพื่อแสดงหรือดาวน์โหลดที่อื่น ข้อพิจารณาด้านความปลอดภัย เพื่อจำกัดการเข้าถึงไฟล์ คุณสามารถใช้ การกำหนดค่าของไฟล์ใน parse server https //www back4app com/docs/platform/file storage ตัวอย่างเช่น คุณอาจอนุญาตให้ผู้ใช้ที่ผ่านการตรวจสอบเท่านั้นที่สามารถอัปโหลดไฟล์ หรือกำหนดสิทธิ์การอ่าน/เขียนในโค้ด swift ของคุณ ขั้นตอนที่ 7 – การตรวจสอบอีเมลและการรีเซ็ตรหัสผ่าน ทำไมต้องมีการตรวจสอบและรีเซ็ตอีเมล? การตรวจสอบอีเมลของผู้ใช้ช่วยให้มั่นใจว่ามีที่อยู่อีเมลที่แท้จริงและใช้งานอยู่ การรีเซ็ตรหัสผ่านช่วยให้ผู้ใช้ของคุณสามารถเข้าถึงบัญชีได้อย่างปลอดภัยหากพวกเขาลืมข้อมูลประจำตัว การกำหนดค่าใน back4app ไปที่ การตั้งค่าอีเมล และเปิดใช้งาน การตรวจสอบอีเมล แก้ไขเทมเพลตอีเมลของคุณสำหรับทั้งการตรวจสอบและการรีเซ็ต การเรียกคืนรหัสผ่านจาก swift task { do { try await user passwordreset(email "alice\@example com") print("password reset email sent!") } catch { print("error requesting password reset ", error) } } ขั้นตอนที่ 8 – การกำหนดตารางงานด้วย cloud jobs cloud jobs คุณสามารถกำหนดตารางงานที่ฝั่งเซิร์ฟเวอร์ใน back4app ได้ ตัวอย่างเช่น การทำความสะอาดข้อมูลเก่าหรือการส่งรายงานประจำสัปดาห์ กำหนดงานใน cloud code ของคุณและกำหนดตารางผ่านแดชบอร์ด back4app parse cloud job("cleanupoldtodos", async (request) => { const now = new date() // example logic remove todos older than 30 days // use master key for privileged operations }) จากนั้น ใน การตั้งค่าเซิร์ฟเวอร์ ของ back4app > งานเบื้องหลัง , คุณสามารถกำหนดตารางให้ทำงานทุกวันหรือในช่วงเวลาใดก็ได้ ขั้นตอนที่ 9 – การรวม webhooks webhooks คืออะไร? webhooks ช่วยให้แอปของคุณสามารถ post ข้อมูลไปยังบริการภายนอกโดยอัตโนมัติเมื่อเกิดเหตุการณ์บางอย่าง นี่เหมาะสำหรับการรวมเข้ากับ slack, stripe หรือ api ของบุคคลที่สามอื่น ๆ การตั้งค่า ในแดชบอร์ด back4app ของคุณ ไปที่ เพิ่มเติม > webhooks เพิ่มจุดสิ้นสุด webhook (เช่น, https //example com/webhook ) เลือกทริกเกอร์ (เช่น, การสร้างวัตถุใน “todo”) สำหรับตรรกะที่กำหนดเอง คุณยังสามารถส่งคำขอไปยัง url ภายนอกในทริกเกอร์ cloud code ขั้นตอนที่ 10 – สำรวจแผงผู้ดูแล back4app แผงผู้ดูแลคืออะไร? แอปผู้ดูแล back4app admin app เป็นอินเตอร์เฟซแบบคลิกและจุดสำหรับพนักงานที่ไม่ใช่เทคนิคหรือพนักงานสนับสนุน มันให้ gui ที่ง่ายในการดำเนินการ crud บนข้อมูลของคุณ—ยอดเยี่ยมสำหรับการจัดการข้อมูลนอกสภาพแวดล้อมการพัฒนาของคุณ การเปิดใช้งานแอปผู้ดูแล ไปที่แดชบอร์ดแอป > เพิ่มเติม > แอปผู้ดูแล เปิดใช้งานแอปผู้ดูแลและเลือกซับโดเมน สร้างผู้ใช้ผู้ดูแล เมื่อเปิดใช้งานแล้ว ใครก็ตามที่มีข้อมูลประจำตัวที่เหมาะสมสามารถดูและแก้ไขข้อมูลของคุณจากอินเตอร์เฟซเว็บที่ใช้งานง่าย—ไม่ต้องเขียนโค้ด บทสรุป โดยการติดตามบทแนะนำนี้ คุณได้เรียนรู้ วิธีสร้างแบ็กเอนด์สำหรับ swift โดยใช้ back4app โดยเฉพาะ คุณได้ สร้างแบ็กเอนด์ที่ปลอดภัย สำหรับแอป swift ของคุณ กำหนดค่าฐานข้อมูล ด้วยสคีมาของคลาสและความสัมพันธ์ของข้อมูล ทำงานกับการค้นหาแบบเรียลไทม์ (live queries) สำหรับการอัปเดตทันที ตั้งค่าความปลอดภัยที่แข็งแกร่ง ด้วย acls และ clps ใช้ cloud code เพื่อรันตรรกะที่กำหนดเองในฝั่งเซิร์ฟเวอร์ ดำเนินการตรวจสอบสิทธิ์ผู้ใช้ ด้วยการตรวจสอบและการรีเซ็ตรหัสผ่าน จัดการการอัปโหลดไฟล์ อย่างปลอดภัย กำหนดตารางงานอัตโนมัติ ด้วย cloud jobs เรียนรู้เกี่ยวกับ webhooks เพื่อรวม api ภายนอก สำรวจแผงผู้ดูแลระบบ สำหรับการจัดการข้อมูลโดยตรง ตอนนี้คุณมีบริการแบ็กเอนด์ที่ใช้งานได้และสามารถปรับขนาดได้สำหรับแอป swift ของคุณ—ซึ่งสามารถขยายได้ง่ายเพื่อจัดการฟีเจอร์ที่ซับซ้อนมากขึ้น เชื่อมต่อกับบริการของบุคคลที่สาม หรือปรับตัวให้เข้ากับการจราจรของผู้ใช้ที่มากขึ้น คุณยังได้เห็นด้วยตนเองว่าการรวมกันของฟีเจอร์ baas ของ back4app และไวยากรณ์สมัยใหม่ของ swift สามารถเร่งการพัฒนาแบ็กเอนด์ได้อย่างไร ขั้นตอนถัดไป สร้างแอป swift ที่พร้อมใช้งานในผลิตภัณฑ์ โดยการพัฒนา ui/ux ของคุณ รวมฟีเจอร์ขั้นสูง เช่น การตรวจสอบสิทธิ์เฉพาะ (ตามบทบาท, sso) หรือเพิ่มเติม cloud code logic สำหรับกฎเฉพาะโดเมน ตรวจสอบเอกสารทางการของ back4app สำหรับการเจาะลึกในบันทึก, การวิเคราะห์, หรือความปลอดภัยขั้นสูง สำรวจบทเรียนอื่นๆ เกี่ยวกับการแชทแบบเรียลไทม์, แดชบอร์ด iot, หรือแอปที่ใช้ตำแหน่ง รวมสิ่งเหล่านี้กับ api ภายนอกเพื่อแก้ปัญหาในโลกจริง นี่คือวิธีการสร้างแบ็กเอนด์สำหรับ swift โดยใช้ back4app! ขอให้สนุกกับการเขียนโค้ด!