Quickstarters
Feature Overview
Как создать бэкенд для NativeScript?
46 мин
введение в этом учебном пособии вы узнаете как создать бэкенд для nativescript с использованием back4app, открытой платформы, которая упрощает разработку бэкенда для мобильных приложений мы пройдем через интеграцию основных функций back4app — таких как управление базами данных, функции cloud code, rest и graphql api, аутентификация пользователей и запросы в реальном времени (live queries) — чтобы создать безопасный и масштабируемый бэкенд для ваших приложений nativescript вы также узнаете, как back4app значительно сокращает время настройки по сравнению с ручной конфигурацией серверов и баз данных мы изучим продвинутые механизмы безопасности, планирование задач с помощью cloud jobs и использование вебхуков для подключения к сторонним сервисам к концу этого руководства у вас будет гибкий бэкенд, который использует nativescript core, который обеспечивает кроссплатформенные мобильные решения nativescript с этой основой вы будете готовы интегрировать свою собственную пользовательскую логику или внешние api по мере необходимости это будет важным шагом к разработке готовых к производству приложений nativescript предварительные требования аккаунт back4app и новый проект back4app начало работы с back4app https //www back4app com/docs/get started/new parse app если у вас нет аккаунта, вы можете создать его бесплатно следуйте руководству выше, чтобы подготовить ваш проект базовая среда разработки nativescript вы можете настроить это с помощью nativescript cli или другого предпочтительного рабочего процесса руководство по началу работы с nativescript https //docs nativescript org/environment setup установленный node js (версия 14 или выше) вам понадобится node js для установки npm пакетов и запуска nativescript cli установка node js https //nodejs org/en/download/ знание javascript и nativescript core официальная документация nativescript https //docs nativescript org/ если вы новичок в nativescript, ознакомьтесь с официальной документацией или учебником для начинающих перед началом убедитесь, что у вас есть все эти предварительные требования перед началом наличие вашего проекта back4app и готовой локальной среды nativescript поможет вам легче следовать инструкциям шаг 1 – настройка проекта back4app создать новый проект первый шаг в создании вашего бэкенда nativescript на back4app – это создание нового проекта если вы еще этого не сделали, выполните следующие шаги войдите в свою учетную запись back4app нажмите кнопку “новое приложение” в вашей панели управления back4app дайте вашему приложению имя (например, “nativescript backend tutorial”) после создания проекта вы увидите его в списке на вашей панели управления back4app этот проект будет служить основой для всех конфигураций бэкенда, рассмотренных в этом учебнике подключите parse sdk back4app использует платформу parse для обработки ваших данных, функциональности в реальном времени, аутентификации пользователей и многого другого чтобы подключить ваше приложение nativescript к back4app, установите пакет parse npm и инициализируйте его с помощью учетных данных, которые вы получите из вашей панели управления back4app получите ваши ключи parse в вашей панели управления back4app перейдите в раздел “настройки приложения” или “безопасность и ключи” вашего приложения найдите ваш id приложения , javascript ключ , и url сервера parse (в формате https //parseapi back4app com ) установите sdk parse npm install parse затем, инициализируйте parse в конфигурационном файле или вашем основном файле входа (например, app js ) например, вы можете создать файл с именем parseconfig js в проекте на основе nativescript src/parseconfig js import parse from 'parse'; // replace the placeholders with your back4app credentials parse initialize('your application id', 'your javascript key'); parse serverurl = 'https //parseapi back4app com'; export default parse; когда вам нужно получить доступ к parse в вашем приложении nativescript, просто импортируйте этот файл завершив этот шаг, вы установили безопасное соединение между вашим фронтендом nativescript и бэкендом back4app, упростив операции с данными шаг 2 – настройка базы данных сохранение и запрос данных с вашим проектом back4app готовым и интегрированным sdk parse, вы можете сохранять и запрашивать данные из вашего приложения nativescript ниже приведен пример использования класса parse object для сохранения и получения списка элементов // example create a task item import parse from ' /parseconfig'; async function createtaskitem(title, iscompleted) { const task = parse object extend('task'); const task = new task(); task set('title', title); task set('iscompleted', iscompleted); try { const savedtask = await task save(); console log('task saved successfully ', savedtask); return savedtask; } catch (error) { console error('error saving task ', error); } } // example query all task items async function fetchtasks() { const task = parse object extend('task'); const query = new parse query(task); try { const results = await query find(); console log('fetched task items ', results); return results; } catch (error) { console error('error fetching tasks ', error); } } вы также можете использовать rest api back4app, если предпочитаете прямые http запросы 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 supplies", "iscompleted" false}' \\ https //parseapi back4app com/classes/task или используйте graphql mutation { createtask(input { fields { title "clean the house" iscompleted false } }) { task { objectid title iscompleted } } } эта гибкость делает удобным создание функций бэкенда для ваших приложений nativescript через parse sdk, rest или graphql api endpoints проектирование схемы и типы данных по умолчанию parse может автоматически создавать схемы на лету, или вы можете определить свои классы и типы данных в панели управления back4app перейдите в раздел “база данных” в вашей панели управления back4app создайте новый класс (например, “задача”) и добавьте столбцы, такие как заголовок (string) и завершено (boolean) back4app поддерживает типы данных, такие как string , number , boolean , object , date , file , pointer , array , relation , geopoint , и polygon вы можете либо позволить parse создать эти столбцы, когда вы впервые сохраняете объект, либо определить их для большего контроля использование ai агента back4app также может помочь вам автоматически генерировать схемы откройте ai агента в вашей панели управления приложением опишите вашу желаемую модель данных (например, “пожалуйста, создайте новый класс task для мобильных приложений с полями iscompleted и duedate ”) позвольте агенту создать схему автоматически реляционные данные если вам нужны реляционные данные—например, объект category который указывает на несколько объектов task —используйте указатели или отношения в parse // linking a task to a category with a pointer async function createtaskforcategory(categoryobjectid, title) { const task = new parse object('task'); const categorypointer = new parse object('category'); categorypointer id = categoryobjectid; task set('title', title); task set('category', categorypointer); try { return await task save(); } catch (err) { console error('error creating task with category relationship ', err); } } // including the pointer data in a query const query = new parse query('task'); query include('category'); const taskswithcategory = await query find(); этот подход помогает вам получить полные данные для задачи и ее связанной категории в одном запросе живые запросы для обновлений в реальном времени включите живые запросы в разделе настройки сервера в панели управления back4app разработчики nativescript могут подписываться на изменения в конкретном классе обновите вашу настройку parse, чтобы включить url адрес сервера живых запросов src/parseconfig js import parse from 'parse'; // replace the placeholders with your back4app credentials parse initialize('your application id', 'your javascript key'); parse serverurl = 'https //parseapi back4app com'; parse livequeryserverurl = 'wss\ //your subdomain here b4a io'; export default parse; а затем подпишитесь на события в реальном времени import parse from ' /parseconfig'; async function subscribetotasks(callback) { const query = new parse query('task'); const subscription = await query subscribe(); subscription on('create', (newtask) => { console log('new task created ', newtask); callback('create', newtask); }); subscription on('update', (updatedtask) => { console log('task updated ', updatedtask); callback('update', updatedtask); }); subscription on('delete', (deletedtask) => { console log('task deleted ', deletedtask); callback('delete', deletedtask); }); return subscription; } эта подписка автоматически обновляет ваш интерфейс пользователя всякий раз, когда task добавляется, изменяется или удаляется — идеально для живых, совместных приложений nativescript шаг 3 – применение безопасности с помощью acl и clp механизм безопасности back4app back4app включает в себя списки контроля доступа (acl) и разрешения на уровне класса (clp) для защиты ваших данных эти модели безопасности позволяют контролировать доступ на чтение/запись как на уровне класса, так и на уровне объекта списки контроля доступа (acl) acl устанавливает разрешения для каждого объекта например, чтобы предоставить только владельцу доступ на чтение и запись async function createprivatetask(title, owneruser) { const task = parse object extend('task'); const task = new task(); task set('title', title); const acl = new parse acl(owneruser); acl setpublicreadaccess(false); acl setpublicwriteaccess(false); task setacl(acl); try { return await task save(); } catch (err) { console error('error saving private task ', err); } } это гарантирует, что только указанный пользователь может изменять или читать объект разрешения на уровне класса (clp) clp устанавливают разрешения по умолчанию для всего класса откройте базу данных в back4app и выберите соответствующий класс перейдите на вкладку разрешения на уровне класса настройте разрешения для публичных, аутентифицированных пользователей или конкретных ролей по мере необходимости сочетание acl и clp предлагает надежную модель безопасности для приложений nativescript для получения дополнительной информации смотрите руководство по безопасности приложений https //www back4app com/docs/security/parse security шаг 4 – написание и развертывание облачных функций облачный код позволяет вам запускать пользовательский javascript код на стороне сервера, поэтому вам не нужно поддерживать инфраструктуру самостоятельно это идеально подходит для добавления сложной логики или интеграций только на сервере в вашем бэкенде nativescript как это работает вы обычно размещаете свой cloud code (функции javascript, триггеры и любые необходимые модули npm) в файле main js затем вы развертываете его на back4app, и он работает в среде parse server без дополнительной конфигурации сервера пример структуры main js const axios = require('axios'); parse cloud define('fetchexternaldata', async (request) => { const url = request params url; if (!url) { throw new error('url parameter is required'); } const response = await axios get(url); return response data; }); parse cloud beforesave('task', (request) => { const task = request object; if (!task get('title')) { throw new error('task must have a title'); } }); вы можете устанавливать и использовать пакеты npm, такие как axios , для http запросов этот подход позволяет осуществлять широкий спектр интеграций, от платежных шлюзов до внешних api, все под защитой вашего приложения back4app типичные случаи использования бизнес логика автоматические расчеты, преобразования данных или обновления статуса валидация данных убедитесь, что обязательные поля присутствуют перед сохранением триггеры запуск кода при создании, обновлении или удалении данных интеграции подключение к внешним сервисам для платежей, аналитики или обмена сообщениями обеспечение безопасности проверка входящих данных или ролей пользователей перед продолжением разверните вашу функцию вот простая функция, которая вычисляет длину текста main js parse cloud define('calculatetextlength', async (request) => { const { text } = request params; if (!text) { throw new error('no text provided'); } return { length text length }; }); развертывание через https //www back4app com/docs/local development/parse cli установите cli curl https //raw\ githubusercontent com/back4app/parse cli/back4app/installer sh | sudo /bin/bash для windows загрузите файл b4a exe https //github com/back4app/parse cli/releases/download/release 3 3 1/b4a exe с страницы релизов https //github com/back4app/parse cli/releases настройте ваш ключ аккаунта b4a configure accountkey разверните ваш облачный код b4a deploy развертывание через панель управления перейдите в cloud code > functions на вашей панели управления вставьте ваш код функции в main js нажмите deploy вызов вашей функции из вашего приложения nativescript с использованием parse sdk import parse from ' /parseconfig'; async function gettextlength(text) { try { const result = await parse cloud run('calculatetextlength', { text }); console log('text length ', result length); } catch (err) { console error('error calling cloud function ', err); } } вы также можете вызвать его с помощью rest или graphql 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 '{"text" "hello back4app"}' \\ https //parseapi back4app com/functions/calculatetextlength mutation { calculatetextlength(input { text "hello graphql" }) { result } } это дает вам гибкий способ интеграции серверной логики в ваши мобильные приложения на базе nativescript шаг 5 – настройка аутентификации пользователей аутентификация пользователя в back4app back4app использует класс parse user для обработки аутентификации, который включает хеширование паролей, токены сессий и многое другое это устраняет большую часть сложности, связанной с управлением учетными записями пользователей настройка аутентификации пользователя в вашем приложении nativescript вы можете создать нового пользователя import parse from ' /parseconfig'; async function signupuser(username, password, email) { const user = new parse user(); user set('username', username); user set('password', password); user set('email', email); try { await user signup(); console log('user signed up successfully!'); } catch (error) { console error('error signing up user ', error); } } async function loginuser(username, password) { try { const user = await parse user login(username, password); console log('user logged in ', user); } catch (error) { console error('error logging in user ', error); } } пример rest может выглядеть так curl x get \\ h "x parse application id your app id" \\ h "x parse rest api key your rest api key" \\ g \\ \ data urlencode 'username=alice' \\ \ data urlencode 'password=secret123' \\ https //parseapi back4app com/login управление сессиями после входа в систему parse назначает пользователю токен сессии чтобы проверить текущего вошедшего пользователя const currentuser = parse user current(); if (currentuser) { console log('logged in user ', currentuser getusername()); } else { console log('no user is logged in'); } выход из системы прост await parse user logout(); интеграция социальных логинов parse также интегрируется с провайдерами oauth, такими как google или facebook настройка варьируется в зависимости от провайдера, поэтому смотрите вход с apple и другими https //www back4app com/docs/platform/sign in with apple для получения подробной информации например, с facebook const facebooklogin = async () => { try { const user = await parse facebookutils login('email'); console log(user existed() ? 'user logged in' 'user signed up and logged in'); } catch (error) { console error('error logging in with facebook ', error); } }; подтверждение электронной почты и сброс пароля включите эти функции в вашей панели управления back4app перейдите в настройки электронной почты в вашем приложении back4app включите подтверждение электронной почты и сброс пароля настройте ваши шаблоны электронной почты и адрес "от" шаг 6 – обработка хранения файлов загрузка и получение файлов back4app поддерживает управление файлами через класс parse file в nativescript вы можете загружать изображения или документы аналогично import parse from ' /parseconfig'; async function uploadimage(file) { const name = file name; const parsefile = new parse file(name, file); try { const savedfile = await parsefile save(); console log('file saved ', savedfile url()); return savedfile url(); } catch (err) { console error('error uploading file ', err); } } async function createphotoobject(file) { const photo = parse object extend('photo'); const photo = new photo(); const parsefile = new parse file(file name, file); photo set('imagefile', parsefile); return await photo save(); } вы можете получить url файла из сохраненного объекта const imagefile = photo get('imagefile'); const imageurl = imagefile url(); // use imageurl in your nativescript ui components безопасность файлов parse server позволяет вам настраивать безопасность загрузки файлов { "fileupload" { "enableforpublic" true, "enableforanonymoususer" true, "enableforauthenticateduser" true } } это гарантирует, что вы можете ограничить или разрешить загрузку файлов в зависимости от ваших предпочтений безопасности шаг 7 – планирование задач с помощью облачных заданий облачные задачи облачные задачи помогают вам автоматизировать рутинные задачи, такие как удаление устаревших записей или отправка уведомлений например // main js parse cloud job('cleanupoldtasks', async (request) => { const task = parse object extend('task'); const query = new parse query(task); 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 oldtasks = await query find({ usemasterkey true }); await parse object destroyall(oldtasks, { usemasterkey true }); return `deleted ${oldtasks length} old tasks `; } catch (err) { throw new error('cleanup error ' + err message); } }); разверните эту задачу через cli или панель управления в панели управления back4app > настройки сервера > фоновая работа , запланируйте ее выполнение ежедневно или с интервалом по вашему выбору шаг 8 – интеграция вебхуков вебхуки позволяют вам отправлять http запросы на внешние сервисы, когда в вашем приложении происходят определенные события — такие как новые записи или регистрации пользователей это можно использовать для интеграции со slack, платежными шлюзами или аналитическими платформами перейдите к конфигурации вебхуков в вашей панели управления back4app и выберите добавить вебхук добавьте ваш url конечной точки (например, https //your service com/webhook ) настройте триггеры для конкретных классов или событий вы также можете определить вебхуки в облачном коде или вызывать внешние api напрямую в триггерах, таких как beforesave или aftersave шаг 9 – изучение панели администратора back4app приложение back4app admin app является ориентированным на модели, удобным интерфейсом для управления данными оно помогает командам или нетехническим пользователям выполнять операции crud, создавать пользовательские панели и управлять задачами на уровне предприятия без написания кода включение приложения администратора в вашей панели управления приложением , нажмите еще > приложение администратора включить приложение администратора создайте первого администратора (имя пользователя/пароль) эта настройка добавляет роль b4aadminuser и связанные классы ( b4asetting , b4amenuitem , и т д ) в вашу схему выберите поддомен, затем войдите с новыми учетными данными администратора этот портал позволяет быстро манипулировать данными, не покидая графический интерфейс — отличное решение для сотрудничества с членами команды, которые могут не быть знакомы с кодированием заключение следуя этому руководству, вы узнали как создать бэкенд для nativescript с использованием back4app и создали безопасный бэкенд для ваших приложений nativescript настроили базу данных с классами, схемами и отношениями реализовали запросы в реальном времени для обновлений в реальном времени обеспечили безопасность ваших данных с помощью acl и clp расширили функциональность с помощью cloud code настроили аутентификацию для регистрации пользователей, входа и токенов сессий управляли загрузкой файлов и их извлечением через parse file запланировали cloud jobs для автоматизированных периодических задач создали webhooks для интеграции с третьими сторонами использовали панель администратора back4app для управления данными без кода эти шаги формируют надежную основу для создания мобильных приложений с открытым исходным кодом и кроссплатформенных приложений с nativescript core продолжайте исследовать расширенные функции, добавляйте больше конечных точек api или интегрируйте свою собственную логику, чтобы адаптировать бэкенд под точные нужды вашего приложения следующие шаги масштабируйте свои приложения nativescript путем оптимизации производительности, кэширования и правил безопасности изучите расширенное управление пользователями такое как разрешения на основе ролей посмотрите официальную документацию back4app для подробных руководств по безопасности, журналам и производительности экспериментируйте с интеграциями в реальном мире такими как платежи или инструменты аналитики счастливого кодирования и наслаждайтесь упрощенным рабочим процессом разработки, который предоставляет back4app!