Spec-Zone.ru › Deno 2

Планирование реализации

Предположим, например, что вы создаёте платформу SaaS CRM, подобную Salesforce. Вы хотите предоставить своим клиентам возможность писать код на JavaScript, который будет выполняться каждый раз при добавлении нового потенциального клиента.

Если вы собираетесь реализовать эту функцию с помощью Deno Deploy, вот как вы можете подумать о её создании:

  • Создайте проект и свяжите его с учётной записью клиента в вашей базе данных. Это позволит отслеживать использование, произведенное каждым клиентом, и, возможно, взимать плату за это использование, используя аналитическую информацию о проекте.
  • Создайте развёртывание, содержащее код, предоставленный вашим конечным пользователем, который должен выполняться при создании нового потенциального клиента.
  • Используя несколько развёртываний в одном проекте, вы можете реализовать «этапные» или «производственные» версии логики обработки событий.
  • Ваше программное обеспечение CRM будет взаимодействовать с кодом конечного пользователя, отправляя HTTP-запрос в развёртывание и ожидая ответа.
  • В будущем, если вы захотите поддерживать написание кода для других событий в вашем CRM (например, создание нового контакта или отправка автоматических отчетов каждую ночь), вы можете создать проект для каждого из этих событий и использовать подобный описанному выше поток для каждого.

Давайте рассмотрим пример API-точки входа, необходимой для этого.

Создание развёртывания для проекта

В предыдущей главе вы создали новый проект и отметили его id свойство. В примере в предыдущей главе идентификатор был:

f084712a-b23b-4aba-accc-3c2de0bfa26a

Вы можете использовать идентификатор проекта для создания развёртывания для этого проекта. Создайте новый файл под названием create_deployment.ts и добавьте в него следующий код для создания нового развёртывания «hello world» для вашего проекта.

create_deployment.ts
const accessToken = Deno.env.get("DEPLOY_ACCESS_TOKEN");
const API = "https://api.deno.com/v1";

// Replace with your desired project ID
const projectId = "your-project-id-here";

// Create a new deployment
const res = await fetch(`${API}/projects/${projectId}/deployments`, {
  method: "POST",
  headers: {
    Authorization: `Bearer ${accessToken}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    entryPointUrl: "main.ts",
    assets: {
      "main.ts": {
        "kind": "file",
        "content":
          `export default { async fetch(req) { return new Response("Hello, World!"); } }`,
        "encoding": "utf-8",
      },
    },
    envVars: {},
  }),
});

const deployment = await res.json();

console.log(res.status);
console.log(
  "Visit your site here:",
  `https://${project.name}-${deployment.id}.deno.dev`,
);

Если вы запустите этот скрипт с помощью следующей команды:

deno run -A --env create_deployment.ts

Вскоре у вас должен появиться простой сервер «Hello World!» на публичном URL-адресе, доступном в вашем веб-приложении Deno Deploy.

Компоненты развёртывания

В примере выше был показан очень простой пример развёртывания. Более сложное развёртывание может включать некоторые или все эти компоненты, полностью описанные здесь в документации API.

  • Ассеты: Файлы исходного кода TypeScript или JavaScript, изображения, JSON-документы — код и статические файлы, которые заставляют ваше развёртывание работать. Эти файлы могут быть закодированы в JSON, который вы загружаете на сервер, используя utf-8 (для обычных исходных файлов) или base64 для изображений и других текстовых файлов. В дополнение к реальным файлам вы также можете включить символические ссылки на другие файлы.
  • URL точки входа: Путь к файлу ассета (файлу TypeScript или JavaScript) из указанной выше коллекции, который должен быть выполнен для запуска сервера в вашем развёртывании.
  • Переменные окружения: Вы можете указать значения, которые должны существовать в системной среде, чтобы получить их с помощью Deno.env.get.
  • Идентификатор базы данных: Идентификатор базы данных Deno KV, которая должна быть доступна этому развёртыванию.
  • Параметры компилятора: Набор параметров, которые должны быть использованы для интерпретации кода TypeScript.

Настраиваемые домены

После создания развёртывания ему назначается сгенерированный URL-адрес. Это может подойти для некоторых сценариев, но часто вы захотите связать настраиваемый домен с вашими развёртываниями. Посмотрите справку по API для доменов.

© 2018–2024 the Deno authors
Licensed under the MIT License.
https://docs.deno.com/subhosting/manual/planning_your_implementation

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API