Quickstarters
Feature Overview
How to Build a Backend for Deno?
34 мин
введение в этом учебном пособии вы узнаете, как создать бэкенд для deno с использованием back4app мы пройдем через каждый шаг, чтобы интегрировать ключевые функции back4app — базу данных, rest api, аутентификацию пользователей, хранение файлов и живые запросы — в среду deno вы увидите, как общаться с back4app через rest эндпоинты и создать полную инфраструктуру без необходимости управлять серверами самостоятельно когда вы используете back4app, вы можете пропустить ручную настройку серверов с deno, экономя время и усилия вы сосредоточитесь на написании более простого кода благодаря стандартной библиотеке deno и современному подходу к концу этого руководства по созданию бэкенда для deno у вас будет четкий путь для интеграции расширенной безопасности, облачного кода и запланированных задач в ваше приложение deno после завершения этого учебника вы сможете легко запустить сервер, обрабатывать rest api, интегрировать аутентификацию пользователей, хранить файлы и планировать задачи вы также поймете, как управлять своими данными с помощью подхода fetch в deno, используя rest api back4app предварительные требования учетная запись 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 api мы будем использовать вызовы fetch и заголовки типа контента для обработки данных, поэтому убедитесь, что вы знаете основы rest и json убедитесь, что у вас есть эти предварительные требования перед началом наличие настроенного проекта back4app и работающей локальной среды deno позволит вам легко следовать этому учебнику шаг 1 – создание нового проекта на back4app и подключение создать новый проект основой для вашего deno бэкенда является проект back4app если вы еще не создали его войдите в свою учетную запись back4app нажмите кнопку “новое приложение” в вашей панели управления back4app дайте вашему приложению имя (например, “deno backend tutorial”) как только ваш проект будет готов, он появится в вашей панели управления back4app этот проект — это место, где вы будете настраивать базы данных, безопасность и api подключение к back4app через rest поскольку у нас нет parse sdk для deno, мы будем использовать rest api конечные точки back4app вы можете найти id приложения , rest api ключ , и url сервера в разделе настройки приложения или безопасность и ключи вашего приложения на протяжении этого учебника мы будем использовать fetch для отправки запросов из deno в back4app обязательно включите свой api ключ и заголовки типа контента в каждом вызове шаг 2 – настройка базы данных на этом шаге вы создадите модель данных в back4app и будете взаимодействовать с ней, используя rest api из deno создание модели данных перейдите в раздел “база данных” в вашей панели управления back4app нажмите “создать новый класс” и назовите его, например, “todo ” добавьте соответствующие столбцы (например, title (string), iscompleted (boolean)) вы также можете разрешить parse автоматически создавать эти столбцы при сохранении данных создание модели данных с помощью ai агента ai агент back4app может разработать вашу схему откройте ai агента в вашей панели управления back4app опишите вашу модель данных (например, “создайте класс todo с полями заголовка, описания и iscompleted ”) позвольте агенту сгенерировать схему автоматически это помогает вам быстро управлять более сложными схемами чтение и запись данных с использованием rest api из deno вы можете запустить сервер, вызывая rest эндпоинты с помощью 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; } чтобы получить 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; } вы можете запустить это с помощью deno run allow net createtodo ts чтение и запись данных с использованием graphql api back4app также предоставляет конечную точку graphql 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; } работа с живыми запросами (необязательно) живые запросы обновляют вас в реальном времени, но deno не имеет родной библиотеки parse livequery вы все равно можете настроить функцию живого запроса в вашей панели управления back4app для других клиентов или использовать websocket в deno для ручной подписки для получения дополнительной информации смотрите официальные документы по живым запросам https //www back4app com/docs/platform/live queries шаг 3 – применение безопасности с помощью acl и clp обзор acl (списки управления доступом) и clp (разрешения на уровне класса) back4app защищают ваши данные используйте clp для установки правил по умолчанию для целого класса затем используйте acl для ограничений на уровне объектов настройка разрешений на уровне класса откройте раздел базы данных в вашей панели управления back4app выберите класс (например, “todo”) перейдите на вкладку разрешений на уровне класса включите или отключите доступ на чтение/запись для общественности или для аутентифицированных пользователей по мере необходимости настройка acl при создании или обновлении объекта через rest вы можете включить атрибут acl в тело запроса например const body = json stringify({ title "private task", acl { " " { "read" false, "write" false }, "role\ admins" { "read" true, "write" true }, } }); этот пример позволяет только роли “администраторы” читать или записывать доступ для общественности отключен шаг 4 – написание функций облачного кода почему облачный код облачный код – это место, где вы храните безопасную серверную логику вы не управляете серверами самостоятельно вы можете добавлять валидации или триггеры для конкретных классов пример функции облачного кода вы можете определить облачную функцию (на 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 или панель облачного кода в вашей панели управления back4app npm в облачном коде вы можете импортировать внешние библиотеки с помощью require() после развертывания серверная среда будет их выполнять это полезно для сложных задач, но помните, что выполнение их из deno отделено от вашей среды облачного кода на back4app шаг 5 – настройка аутентификации включить аутентификацию back4app использует класс parse user для аутентификации пока вы работаете с deno, вы можете вызывать rest эндпоинты для управления пользователями регистрация и вход с использованием 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 затем вы будете вызывать специальные конечные точки с токенами oauth см документацию по социальному входу 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 – подтверждение электронной почты и сброс пароля обзор подтверждение электронной почты обеспечивает легитимный доступ сброс пароля помогает пользователям безопасно восстановить доступ настройка панели управления включите подтверждение электронной почты в вашей панели управления back4app в разделе настройки электронной почты настройте свои шаблоны подтверждения включите сброс пароля и установите предпочитаемый макет электронной почты когда пользователь регистрируется, он получает ссылку для подтверждения, если вы включили проверку электронной почты для сброса пароля вызовите конечную точку rest post /requestpasswordreset шаг 8 – планирование задач с помощью облачных заданий обзор облачных заданий облачные задания выполняются периодически без вмешательства человека например, вы можете ежедневно удалять старые записи или отправлять регулярные напоминания по электронной почте 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 `; }); после развертывания этой задачи вы можете запланировать ее в настройки приложения > настройки сервера > фоновая работа на вашей панели управления back4app шаг 9 – интеграция вебхуков определение вебхук – это http обратный вызов, который срабатывает, когда происходят события, такие как создание или обновление объектов вы можете интегрироваться с slack, stripe или любым внешним сервисом конфигурация откройте “еще” > “вебхуки” в панели управления back4app нажмите “добавить вебхук” и укажите конечную точку вашего стороннего сервиса установите триггеры или классы, для которых вы хотите отправлять запросы это позволяет внешним системам получать данные всякий раз, когда вы создаете или изменяете объекты в back4app шаг 10 – изучение панели администратора back4app введение в панель администратора непрофессиональные команды могут использовать эту панель для визуального управления данными это упрощает операции crud и обзоры данных как включить перейдите в панель управления приложением > дополнительно > приложение администратора и выберите «включить приложение администратора» создайте администратора для входа установите поддомен для вашего приложения администратора затем вы можете войти в приложение администратора для безопасного управления записями заключение в этом учебном пособии вы узнали, как создать бэкенд для deno на back4app вы создали модели данных, обработали аутентификацию пользователей, узнали о acl и clp для безопасности и запланировали облачные задания вы также увидели, как интегрировать внешние api через вебхуки и как запускать сервер или rest api с помощью команд deno run allow net эта настройка позволяет вам быстро начать без ручной настройки файловых систем или сложностей стандартной библиотеки для архитектуры сервера следующие шаги расширьте ваше приложение deno с дополнительными конечными точками и сложной логикой с использованием облачного кода интегрируйте больше сервисов (например, платежные шлюзы, аналитика) с вашими данными back4app ссылайтесь на официальную документацию back4app для более глубоких советов по безопасности, производительности и анализу логов экспериментируйте с продвинутыми функциями реального времени или хранилищем deno kv, соединяя данные между вашей средой выполнения deno и надежной средой back4app с вашими новыми знаниями вы можете уверенно развернуть безопасный, масштабируемый и насыщенный функциями бэкенд deno, поддерживаемый back4app