Quickstarters
Feature Overview
Как создать бэкенд для Xamarin?
30 мин
введение в этом учебном пособии вы узнаете, как создать бэкенд для ваших xamarin мобильных приложений, используя мощные функции back4app мы будем полагаться на rest api , graphql , и другие варианты веб api вместо использования специализированного sdk этот подход позволяет вашему мобильному клиенту оставаться легким и гибким, позволяя вам подключаться к вашим данным через простые http запросы мы рассмотрим создание моделей базы данных, применение безопасности, обработку аутентификации и выполнение операций с файлами следуя этим шагам, вы увидите, как быстро и безопасно создать бэкенд для xamarin вы также изучите планирование автоматизированных задач и интеграцию webhooks для расширения функциональности вашего xamarin приложения, чтобы вы могли сосредоточиться на кодировании вашего пользовательского интерфейса, а не на управлении конфигурациями сервера после того как вы завершите это руководство, у вас будет многоразовый шаблон для создания мобильных приложений , которые используют back4app в качестве своего бэкенда вы также поймете, как применять списки управления доступом (acl), писать облачный код (если необходимо) и включать сложные рабочие процессы, такие как живые запросы или облачные задания в ваше окончательное решение предварительные требования чтобы получить максимальную пользу от этого учебника, убедитесь, что у вас есть учетная запись 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 запросы из публичного класса в c#) с этими предварительными требованиями вы будете готовы следовать инструкциям и подключить ваш проект xamarin к back4app шаг 1 – создание нового проекта на back4app и подключение создайте проект back4app в вашей панели управления back4app это основа для вашего бэкенда назовите ваш проект (например, “xamarin backend tutorial”) найдите ваши ключи приложения в разделе “безопасность и ключи” вашего приложения вы увидите rest, graphql или другие ключи, которые вы можете использовать при отправке запросов с вашего мобильного клиента настройте ваш проект xamarin для выполнения http запросов вместо parse sdk вы будете использовать либо httpclient , либо любую сетевую библиотеку, которую вы предпочитаете, чтобы вызывать rest или graphql конечные точки вашего приложения back4app например, вы можете хранить ваш идентификатор приложения и rest api ключ в безопасном месте или в файле констант 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"; } при вызове веб api , всегда включайте эти учетные данные в заголовки вашего запроса это гарантирует, что ваши запросы направляются к правильному приложению с необходимой авторизацией шаг 2 – настройка базы данных 1\ создание модели данных используйте панель управления back4app, чтобы определить ваши классы или позвольте им создаваться динамически при первом запросе например, если вы хотите класс todo , вы можете создать его в разделе база данных или на лету через 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 агента back4app предоставляет ai агента , который может генерировать полные структуры классов откройте ai агента , в вашем проекте 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 вы можете отправить json объект с вашей строкой graphql на https //parseapi back4app com/graphql 5\ работа с живыми запросами (по желанию) хотя вы используете веб api вызовы, а не sdk parse, вы все равно можете включить живые запросы, если хотите получать обновления данных в реальном времени вы будете использовать специализированные соединения (websockets) для подписки на изменения классов включите живые запросы в настройках сервера вашего приложения server settings в back4app, затем используйте совместимую клиентскую библиотеку в xamarin, если она доступна в качестве альтернативы вы можете создать собственное решение на основе websocket или полагаться на опросы, если поддержка в реальном времени не является обязательной для вашего приложения шаг 3 – применение безопасности с помощью acl и clp 1\ обзор acl и clp безопасность back4app включает разрешения на уровне класса (clp) и списки управления доступом (acl) clp определяют, какие пользователи или роли могут читать/записывать в целый класс acl добавляют безопасность на уровне объектов скомбинируйте их, чтобы убедиться, что только авторизованные пользователи могут манипулировать вашими данными 2\ настройка разрешений на уровне класса откройте раздел база данных , на back4app выберите ваш класс (например, todo) перейдите к разрешениям на уровне класса , чтобы установить правила чтения/записи вы можете разрешить чтение или запись только аутентифицированным пользователям это гарантирует, что ваш мобильный клиент должен войти в систему перед чтением данных шаг 4 – написание функций облачного кода 1\ почему облачный код облачный код позволяет вам выполнять пользовательскую серверную логику вы можете создавать бизнес правила, валидации или триггеры, которые срабатывают при изменении данных это снижает риск подделки, так как логика выполняется вне мобильного клиента 2\ пример функции и триггеров ниже приведен упрощенный пример облачной функции в файле 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 или раздел облачного кода на вашей панели управления после развертывания вы можете вызывать ваши функции из 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\ соображения по безопасности чтобы обеспечить безопасность загрузки файлов, перейдите в настройки сервера back4app и настройте разрешения на файлы например, вы можете разрешить загрузку только аутентифицированным пользователям шаг 7 – подтверждение электронной почты и сброс пароля 1\ обзор подтверждение электронной почты гарантирует, что пользователи владеют электронной почтой, с которой они зарегистрировались ссылки для сброса пароля позволяют им восстановить доступ, если они забудут свои пароли 2\ конфигурация панели управления back4app включите проверку электронной почты в разделе настройки электронной почты отредактируйте шаблон сброса пароля и установите адрес “отправителя” вы также можете настроить содержание электронной почты в соответствии с вашим брендом 3\ реализация после включения, если пользователь зарегистрируется с электронной почтой, он получит ссылку для подтверждения запросы на сброс пароля отправляются на тот же базовый api с электронной почтой пользователя для инициирования письма со сбросом шаг 8 – планирование задач с помощью облачных заданий 1\ что делают облачные задания облачные задания позволяют вам планировать рутинные задачи, такие как очистка старых данных или отправка ежедневных сводок по электронной почте, все это с платформы 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 `; }); разверните облачный код, затем запланируйте задание в разделе настройки приложения > настройки сервера > фоновая работа шаг 9 – интеграция вебхуков определите вебхук на back4app, перейдя в дополнительно > вебхуки и нажав “добавить вебхук ” укажите конечную точку, такую как https //your service com/webhook endpoint выберите триггеры, такие как “новый объект в классе todo ” webhook'и могут уведомлять сторонние сервисы, так что ваше приложение xamarin может оставаться легковесным, в то время как внешние системы обрабатывают дополнительную логику или уведомления шаг 10 – изучение панели администратора back4app приложение back4app admin app – это удобный способ выполнять операции crud без написания запросов включите его в app dashboard > more > admin app создайте администратора, выберите поддомен и войдите в систему это приложение администратора идеально подходит для не технических членов команды, которым необходимо управлять данными, но которым не следует иметь прямой доступ к базе данных заключение вы только что увидели, как создать бэкенд для xamarin, используя back4app api вы создали безопасные классы, добавили clp'и и acl'и , обработали аутентификацию и изучили загрузку файлов, планирование задач и интеграцию с внешними сервисами этот подход обеспечивает, чтобы ваши мобильные приложения оставались быстрыми и гибкими, используя мощь хостируемой базы данных и облачной среды следующие шаги расширьте ваше приложение xamarin для обработки более сложной логики, кэширования или расширенных ролей и разрешений погрузитесь в расширенные функции , такие как push уведомления, или интегрируйте данные в реальном времени с помощью live queries, если вам нужны совместные обновления посетите официальную документацию back4app для более глубоких руководств по безопасности, производительности и отладке создавайте решения для реального мира путем смешивания сторонних api (платежные шлюзы, аналитика, социальные сети) с вашим бэкендом back4app эта комбинация может улучшить функциональность вашего мобильного клиента и поддерживать ваш код в порядке