Quickstarters
Feature Overview
How to Build a Backend for Xamarin?
28 นาที
บทนำ ในบทเรียนนี้ คุณจะได้เรียนรู้วิธีการสร้างแบ็กเอนด์สำหรับ xamarin แอปมือถือของคุณโดยใช้ฟีเจอร์ที่ทรงพลังของ back4app เราจะพึ่งพา rest api , graphql , และตัวเลือก api เว็บอื่น ๆ แทนการใช้ sdk ที่เฉพาะเจาะจง วิธีนี้จะทำให้ mobile client ของคุณมีน้ำหนักเบาและยืดหยุ่น ช่วยให้คุณเชื่อมต่อกับข้อมูลของคุณผ่านการเรียก http ที่ง่าย เราจะครอบคลุมการสร้างโมเดลฐานข้อมูล การใช้ความปลอดภัย การจัดการการพิสูจน์ตัวตน และการดำเนินการไฟล์ โดยการทำตามขั้นตอนเหล่านี้ คุณจะเห็นวิธีการสร้างแบ็กเอนด์สำหรับ xamarin ได้อย่างรวดเร็วและปลอดภัย คุณยังจะได้สำรวจการกำหนดตารางงานอัตโนมัติและการรวม webhooks เพื่อขยายฟังก์ชันการทำงานของ xamarin แอปของคุณ ดังนั้นคุณจึงสามารถมุ่งเน้นไปที่การเขียน ui ของคุณแทนที่จะต้องจัดการการกำหนดค่าของเซิร์ฟเวอร์ เมื่อคุณทำตามคู่มือนี้เสร็จแล้ว คุณจะมีแม่แบบที่สามารถนำกลับมาใช้ใหม่ได้สำหรับการสร้าง แอปมือถือ ที่พึ่งพา back4app สำหรับแบ็กเอนด์ของพวกเขา คุณจะเข้าใจวิธีการใช้ access control lists (acls), เขียน cloud code (ถ้าจำเป็น), และรวมการทำงานขั้นสูงเช่น live queries หรือ cloud jobs ในโซลูชันสุดท้ายของคุณ ข้อกำหนดเบื้องต้น เพื่อให้ได้ประโยชน์สูงสุดจากบทเรียนนี้ ให้แน่ใจว่าคุณมี บัญชี back4app ลงทะเบียนฟรีที่นี่ https //www back4app com/ โครงการ back4app ใหม่ เริ่มต้นใช้งาน back4app https //www back4app com/docs/get started/new parse app สภาพแวดล้อมการพัฒนา xamarin (visual studio หรือ visual studio สำหรับ mac) เอกสารการติดตั้ง xamarin https //docs microsoft com/en us/xamarin/get started/installation/ ความรู้พื้นฐานเกี่ยวกับ c# และ xamarin (รวมถึงวิธีการทำคำขอ api เว็บจาก public class ใน c#) เมื่อคุณเตรียมข้อกำหนดเบื้องต้นเหล่านี้เสร็จแล้ว คุณจะพร้อมที่จะติดตามและเชื่อมโยงโครงการ xamarin ของคุณกับ back4app ขั้นตอนที่ 1 – สร้างโปรเจกต์ใหม่บน back4app และเชื่อมต่อ สร้างโปรเจกต์ back4app ในแดชบอร์ด back4app ของคุณ นี่คือพื้นฐานสำหรับแบ็กเอนด์ของคุณ ตั้งชื่อโปรเจกต์ของคุณ (เช่น “xamarin backend tutorial”) ค้นหาคีย์แอปของคุณ โดยไปที่ส่วน “security & keys” ของแอป คุณจะเห็น rest, graphql หรือคีย์อื่น ๆ ที่คุณอาจใช้เมื่อทำการร้องขอจากไคลเอนต์มือถือของคุณ กำหนดค่าโปรเจกต์ xamarin ของคุณ เพื่อทำการร้องขอ http แทนที่จะใช้ parse sdk คุณจะใช้ httpclient , หรือไลบรารีเครือข่ายใด ๆ ที่คุณต้องการ เพื่อเรียกใช้ rest หรือ graphql ของแอป back4app ของคุณ ตัวอย่างเช่น คุณสามารถเก็บ application id และ rest api key ไว้ในที่ปลอดภัยหรือในไฟล์ค่าคงที่ public class back4appconstants { public const string appid = "your application id"; public const string restapikey = "your rest api key"; public const string serverurl = "https //parseapi back4app com"; } เมื่อเรียกใช้ web api , ให้รวมข้อมูลประจำตัวเหล่านี้ในส่วนหัวของคำร้องขอเสมอ สิ่งนี้จะช่วยให้แน่ใจว่าคำร้องขอของคุณถูกส่งไปยังแอปที่ถูกต้องพร้อมการอนุญาตที่จำเป็น ขั้นตอนที่ 2 – ตั้งค่าฐานข้อมูล 1\ การสร้างโมเดลข้อมูล ใช้แดชบอร์ด back4app เพื่อกำหนดคลาสของคุณหรือให้สร้างขึ้นโดยอัตโนมัติเมื่อมีการร้องขอครั้งแรก ตัวอย่างเช่น หากคุณต้องการคลาส todo คุณสามารถสร้างมันใน database หรือสร้างแบบทันทีผ่าน 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 2\ การสร้างโมเดลข้อมูลโดยใช้ ai agent back4app มี ai agent ที่สามารถสร้างโครงสร้างคลาสที่สมบูรณ์ เปิด ai agent ในโปรเจกต์ back4app ของคุณ อธิบาย โมเดลของคุณ (เช่น “กรุณาสร้างคลาสใหม่ชื่อ ‘todo’ ที่มีฟิลด์ title และ iscompleted ”) ยืนยัน เพื่อสร้างสคีมาโดยอัตโนมัติ 3\ การอ่านและเขียนข้อมูล (rest) ภายใน xamarin โครงการของคุณ คุณสามารถเขียน public class (เช่น restclient ) ที่จัดการคำขอทั้งหมดไปยัง back4app using system net http; using system text; using newtonsoft json; public class restclient { private readonly httpclient client; public restclient() { client = new httpclient(); client defaultrequestheaders add("x parse application id", back4appconstants appid); client defaultrequestheaders add("x parse rest api key", back4appconstants restapikey); } public async task createtodoasync(string title, bool iscompleted) { var newtodo = new { title = title, iscompleted = iscompleted }; var content = new stringcontent(jsonconvert serializeobject(newtodo), encoding utf8, "application/json"); var response = await client postasync($"{back4appconstants serverurl}/classes/todo", content); // handle the response } public async task\<list\<todo>> gettodosasync() { var response = await client getasync($"{back4appconstants serverurl}/classes/todo"); var jsonstring = await response content readasstringasync(); // parse json into a c# model (todo) // return the result // return new list\<todo>(); // placeholder } } public class todo { public string objectid { get; set; } public string title { get; set; } public bool iscompleted { get; set; } } 4\ การอ่านและเขียนข้อมูล (graphql) สำหรับคำขอ graphql คุณสามารถส่งคำขอไปยังจุดสิ้นสุด graphql ของ back4app curl x post \\ h "content type application/json" \\ h "x parse application id your application id" \\ h "x parse master key your master key" \\ \ data '{"query" "mutation { createtodo(input {fields {title \\"wash the car\\" iscompleted\ false}}){ todo{ objectid title }}}"}' \\ https //parseapi back4app com/graphql ในทำนองเดียวกัน จาก xamarin คุณสามารถ post ข้อมูล json ที่มีสตริง graphql ของคุณไปที่ https //parseapi back4app com/graphql 5\ การทำงานกับ live queries (ไม่บังคับ) แม้ว่าคุณจะใช้การเรียก api เว็บแทนที่จะใช้ parse sdk แต่คุณยังสามารถเปิดใช้งาน live queries ได้หากคุณต้องการการอัปเดตข้อมูลแบบเรียลไทม์ คุณจะใช้การเชื่อมต่อเฉพาะ (websockets) เพื่อสมัครสมาชิกการเปลี่ยนแปลงคลาส เปิดใช้งาน live queries จาก การตั้งค่าเซิร์ฟเวอร์ ของแอปของคุณใน back4app จากนั้นใช้ไลบรารีไคลเอนต์ที่เข้ากันได้ใน xamarin หากมีให้ หรือคุณสามารถสร้างโซลูชัน websocket ของคุณเองหรือพึ่งพาการสำรวจข้อมูลหากการสนับสนุนแบบเรียลไทม์เป็นตัวเลือกสำหรับแอปของคุณ ขั้นตอนที่ 3 – การใช้ความปลอดภัยด้วย acls และ clps 1\ ภาพรวมของ acls และ clps ความปลอดภัยของ back4app รวมถึง class level permissions (clps) และ access control lists (acls) clps กำหนดว่าผู้ใช้หรือบทบาทใดสามารถอ่าน/เขียนไปยังคลาสทั้งหมดได้ acls เพิ่มความปลอดภัยต่อวัตถุแต่ละรายการ รวมกันเพื่อให้แน่ใจว่าผู้ใช้ที่ได้รับอนุญาตเท่านั้นที่สามารถจัดการข้อมูลของคุณได้ 2\ การตั้งค่า class level permissions เปิดส่วนของฐานข้อมูล บน back4app เลือกคลาสของคุณ (เช่น todo) ไปที่ class level permissions เพื่อตั้งกฎการอ่าน/เขียน คุณอาจอนุญาตให้ผู้ใช้ที่ผ่านการตรวจสอบเท่านั้นที่สามารถอ่านหรือเขียนได้ สิ่งนี้ทำให้แน่ใจว่าคลไคลเอนต์มือถือของคุณต้องเข้าสู่ระบบก่อนที่จะอ่านข้อมูล ขั้นตอนที่ 4 – การเขียนฟังก์ชัน cloud code 1\ ทำไมต้องใช้ cloud code cloud code ช่วยให้คุณสามารถเรียกใช้ตรรกะที่กำหนดเองด้านเซิร์ฟเวอร์ คุณสามารถสร้างกฎทางธุรกิจ การตรวจสอบ หรือทริกเกอร์ที่ทำงานเมื่อข้อมูลเปลี่ยนแปลง สิ่งนี้ช่วยลดความเสี่ยงของการดัดแปลงเนื่องจากตรรกะทำงานนอกคลไคลเอนต์มือถือ 2\ ตัวอย่างฟังก์ชันและทริกเกอร์ ด้านล่างนี้คือตัวอย่างที่เรียบง่ายของฟังก์ชัน cloud ในไฟล์ main js parse cloud define('helloxamarin', async (request) => { return 'hello from xamarin cloud code!'; }); parse cloud beforesave('todo', (request) => { const todo = request object; if (!todo get('title')) { throw 'title is required'; } }); 3\ การปรับใช้ ในการปรับใช้ คุณสามารถใช้ back4app cli หรือส่วน cloud code ในแดชบอร์ดของคุณ เมื่อปรับใช้แล้ว คุณสามารถเรียกใช้ฟังก์ชันของคุณจาก xamarin ผ่าน rest curl x post \\ h "x parse application id your app id" \\ h "x parse rest api key your rest api key" \\ h "content type application/json" \\ d '{}' \\ https //parseapi back4app com/functions/helloxamarin 4\ โมดูล npm หากคุณต้องการไลบรารีเพิ่มเติม ให้ติดตั้งผ่าน npm ในโฟลเดอร์โปรเจกต์ cloud code ของคุณ หลังจากนั้น require ไลบรารีเหล่านี้ใน main js วิธีนี้มีประโยชน์สำหรับการเรียกใช้ api ของบุคคลที่สามจากฝั่งเซิร์ฟเวอร์ ขั้นตอนที่ 5 – การกำหนดค่าการตรวจสอบสิทธิ์ 1\ เปิดใช้งานการตรวจสอบสิทธิ์ผู้ใช้ ใน back4app คลาส user จะจัดการข้อมูลประจำตัวของผู้ใช้ ภายใต้ app settings , คุณสามารถเปิดใช้งานการตรวจสอบสิทธิ์ผู้ใช้ การตรวจสอบอีเมล และการตั้งค่าการรีเซ็ตรหัสผ่าน 2\ การลงทะเบียนผู้ใช้ / เข้าสู่ระบบ (rest) จากโปรเจกต์ xamarin ของคุณ คุณสามารถเขียนวิธีการ c# เพื่อจัดการการลงทะเบียนและการเข้าสู่ระบบ public async task signupuserasync(string username, string password, string email) { var user = new { username = username, password = password, email = email }; var content = new stringcontent(jsonconvert serializeobject(user), encoding utf8, "application/json"); var response = await client postasync($"{back4appconstants serverurl}/users", content); // parse response } public async task loginuserasync(string username, string password) { var loginendpoint = $"{back4appconstants serverurl}/login?username={username}\&password={password}"; var response = await client getasync(loginendpoint); // parse response } คุณสามารถเก็บโทเค็นเซสชันไว้ที่ฝั่งไคลเอนต์สำหรับคำขอในอนาคต 3\ การเข้าสู่ระบบด้วยโซเชียล เพื่อรวมการเข้าสู่ระบบด้วยโซเชียล (เช่น google, facebook) โปรดดูที่ เอกสารการเข้าสู่ระบบด้วยโซเชียลของ back4app https //www back4app com/docs/platform/sign in with apple ผู้ให้บริการแต่ละรายมีการไหลของ oauth ของตนเอง ซึ่งคุณสามารถจัดการจาก ไคลเอนต์มือถือ จากนั้น ส่งโทเค็นที่ส่งกลับไปยัง back4app ขั้นตอนที่ 6 – การจัดการการเก็บไฟล์ 1\ การตั้งค่าการเก็บไฟล์ ไฟล์สามารถอัปโหลดได้โดยการส่งคำขอ post พร้อมกับข้อมูลไฟล์ในเนื้อหา ตัวอย่างเช่น เพื่อเก็บภาพจากแอป xamarin ของคุณ ให้อ่านภาพลงในอาร์เรย์ไบต์ จากนั้นส่ง curl x post \\ h "x parse application id your app id" \\ h "x parse rest api key your rest api key" \\ h "content type image/png" \\ \ data binary "@local image png" \\ https //parseapi back4app com/files/myimage png 2\ ตัวอย่างการอัปโหลดด้วย c# public async task\<string> uploadfileasync(byte\[] filedata, string filename) { var filecontent = new bytearraycontent(filedata); filecontent headers contenttype = new system net http headers mediatypeheadervalue("image/png"); var response = await client postasync($"{back4appconstants serverurl}/files/{filename}", filecontent); var jsonresponse = await response content readasstringasync(); // parse the response to get file url return "file url from response"; } 3\ ข้อพิจารณาด้านความปลอดภัย เพื่อรักษาความปลอดภัยในการอัปโหลดไฟล์ ให้ไปที่ การตั้งค่าเซิร์ฟเวอร์ ของคุณและปรับแต่ง สิทธิ์ไฟล์ ตัวอย่างเช่น คุณสามารถอนุญาตให้ผู้ใช้ที่ได้รับการตรวจสอบเท่านั้นที่สามารถอัปโหลดได้ ขั้นตอนที่ 7 – การตรวจสอบอีเมลและการรีเซ็ตรหัสผ่าน 1\ ภาพรวม การตรวจสอบอีเมลช่วยให้แน่ใจว่าผู้ใช้เป็นเจ้าของอีเมลที่ลงทะเบียนไว้ ลิงก์การรีเซ็ตรหัสผ่านช่วยให้พวกเขากลับเข้าสู่ระบบได้หากลืมรหัสผ่าน 2\ การกำหนดค่าดashboard ของ back4app เปิดใช้งาน การตรวจสอบอีเมล ภายใต้ การตั้งค่าอีเมล แก้ไข เทมเพลตการรีเซ็ตรหัสผ่าน และตั้งค่าที่อยู่ “จาก” คุณยังสามารถปรับแต่งเนื้อหาอีเมลให้ตรงกับแบรนด์ของคุณได้ 3\ การดำเนินการ เมื่อเปิดใช้งาน หากผู้ใช้ลงทะเบียนด้วยอีเมล พวกเขาจะได้รับลิงก์การตรวจสอบ การเรียกคืนรหัสผ่านจะถูกทำไปยัง api หลักเดียวกันด้วยอีเมลของผู้ใช้เพื่อกระตุ้นอีเมลรีเซ็ต ขั้นตอนที่ 8 – การกำหนดตารางงานด้วย cloud jobs 1\ cloud jobs ทำอะไร cloud jobs ช่วยให้คุณกำหนดตารางงานประจำ เช่น การทำความสะอาดข้อมูลเก่าหรือการส่งอีเมลสรุปประจำวัน ทั้งหมดจากแพลตฟอร์ม back4app 2\ ตัวอย่าง 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 ago = new date(now 30 24 60 60 1000); query lessthan('createdat', thirty days ago); const oldtodos = await query find({ usemasterkey true }); await parse object destroyall(oldtodos, { usemasterkey true }); return `deleted ${oldtodos length} old items `; }); ปรับใช้ cloud code จากนั้นกำหนดตารางงานภายใต้ การตั้งค่าแอป > การตั้งค่าเซิร์ฟเวอร์ > งานเบื้องหลัง ขั้นตอนที่ 9 – การรวม webhooks กำหนด webhook บน back4app โดยไปที่ เพิ่มเติม > webhooks และคลิก “เพิ่ม webhook ” ระบุ endpoint เช่น https //your service com/webhook endpoint เลือก triggers เช่น “วัตถุใหม่ในคลาส todo ” webhook สามารถแจ้งเตือนบริการของบุคคลที่สาม ดังนั้นแอป xamarin ของคุณจึงสามารถคงความเบาไว้ในขณะที่ระบบภายนอกจัดการกับตรรกะหรือการแจ้งเตือนเพิ่มเติม ขั้นตอนที่ 10 – สำรวจแผงผู้ดูแล back4app แอป back4app admin app เป็นวิธีที่ใช้งานง่ายในการจัดการการดำเนินการ crud โดยไม่ต้องเขียนคำสั่งค้นหา เปิดใช้งานใน app dashboard > more > admin app สร้างผู้ใช้ผู้ดูแล เลือกซับโดเมน และเข้าสู่ระบบ แอปผู้ดูแลนี้เหมาะสำหรับสมาชิกในทีมที่ไม่ใช่เทคนิคซึ่งต้องการจัดการข้อมูลแต่ไม่ควรเข้าถึงฐานข้อมูลโดยตรง บทสรุป คุณเพิ่งเห็นวิธีการสร้างแบ็กเอนด์สำหรับ xamarin โดยใช้ back4app apis คุณได้สร้างคลาสที่ปลอดภัย เพิ่ม clps และ acls , จัดการการตรวจสอบสิทธิ์ และสำรวจการอัปโหลดไฟล์ การกำหนดเวลา และการรวมกับบริการภายนอก วิธีการนี้ช่วยให้ แอปมือถือ ของคุณยังคงรวดเร็วและยืดหยุ่นในขณะที่ใช้พลังของฐานข้อมูลที่โฮสต์และสภาพแวดล้อมคลาวด์ ขั้นตอนถัดไป ขยายแอป xamarin ของคุณ เพื่อจัดการตรรกะที่ซับซ้อนมากขึ้น การแคช หรือบทบาทและสิทธิ์ขั้นสูง ดำน้ำลึกในฟีเจอร์ขั้นสูง , เช่น การแจ้งเตือนแบบพุช หรือรวมข้อมูลเรียลไทม์กับ live queries หากคุณต้องการการอัปเดตแบบร่วมมือ เยี่ยมชมเอกสารทางการของ back4app สำหรับคู่มือที่ลึกซึ้งเกี่ยวกับความปลอดภัย ประสิทธิภาพ และการดีบัก สร้างโซลูชันในโลกจริง โดยการผสมผสาน api ของบุคคลที่สาม (เกตเวย์การชำระเงิน การวิเคราะห์ โซเชียลมีเดีย) กับแบ็กเอนด์ back4app ของคุณ การรวมกันนี้สามารถเพิ่มฟังก์ชันการทำงานของไคลเอนต์มือถือของคุณและทำให้โค้ดของคุณเป็นระเบียบ