Настройте и запустите свой API за считанные минуты, до 100 000 бесплатных запросов в день.

Как часто вам приходилось развертывать проект, например API, и вы увязали в том, как запустить его в AWS или быстро достичь предела уровня бесплатного пользования в вашей учетной записи?

Это случилось со мной, когда я работал над ботом для сервера Discord, частью которого являюсь. Я хотел сосредоточиться на создании своего бота, чтобы иметь возможность быстро выполнять итерации и развертывание и, в конечном счете, не беспокоиться о том, как он переходит с моего Mac на общедоступный.

Войдите в Cloudflare и его Workers. Короче говоря, они позволяют быстро и легко развертывать код в бессерверных средах выполнения. После настройки (что само по себе занимает всего пару минут) вы можете развернуть свой код в любое время прямо с вашего Mac за несколько секунд.

Вам также не нужно беспокоиться об использовании, по крайней мере, на раннем этапе, поскольку бесплатная учетная запись Cloudflare дает вам до 100 000 запросов в день для ваших рабочих, из которых вы можете иметь до 30 в своей учетной записи.

Продал? Давайте начнем работу с вашим первым рабочим!

Настройте свой первый воркер Cloudflare

Прежде чем мы сможем что-либо развернуть, нам нужно создать новый проект с помощью Wrangler — CLI-инструмента Cloudflare для взаимодействия с Workers. В любое время, когда вы хотите обновить или развернуть своего воркера, вы можете использовать Wrangler.

Мы создадим worker на основе TypeScript, самый простой в установке и запуске. Однако вы можете создавать воркеры на любом языке, который либо компилируется в WebAssembly (например, Rust), либо в JavaScript (например, Python, PHP и FSharp). Полный список поддерживаемых языков можно посмотреть здесь.

Вот шаги для первоначальной настройки вашего первого воркера Cloudflare:

  1. Перейдите на https://dash.cloudflare.com/sign-up и создайте бесплатную учетную запись. Убедитесь, что вы подтвердили свой адрес электронной почты, прежде чем пытаться выполнить более поздние шаги, такие как развертывание.
  2. Установите последнюю версию NodeJS, используя эти инструкции.
  3. Перейдите туда, где вы хотите создать свой проект, и запустите npx wrangler init my-project-name . Это создаст новую папку с тем же именем, что и последний параметр.
  4. Вам зададут несколько вопросов. Первый вопрос в Git зависит от вас, но на последние два следует ответить «да», так как вы хотите package.json и хотите использовать TypeScript. Если вам удобнее использовать vanilla JS, вы можете отказаться от TypeScript, но в остальной части статьи будет использоваться TypeScript.
  5. Затем выберите Fetch Worker. Для справки: fetch-воркер обслуживает HTTP-запросы по запросу (например, вы получаете доступ к URL-адресу), тогда как Scheduled Worker выполняется по определенному расписанию, подобно cronjob.

На этом настройка вашего воркера завершена! Теперь у вас должна быть папка с рядом файлов, которые мы рассмотрим далее.

Изучите структуру вашего Cloudflare Worker

Теперь, когда у вас есть готовый простой воркер, давайте просмотрим несколько файлов, чтобы понять структуру проекта.

wrangler.toml

name = "cloudflare_worker_api"
main = "src/index.ts"
compatibility_date = "2022-10-28"

Во-первых, у нас есть файл конфигурации Wrangler. Это используется всякий раз, когда вы выполняете развертывание в Cloudflare. В настоящее время это довольно просто, но в следующих статьях мы рассмотрим добавление дополнительных настроек, чтобы добавить больше функциональности вашим воркерам, таким как хранилище или пользовательские домены.

На данный момент имя — это имя воркера, которое также будет использоваться в качестве субдомена для вашего воркера. Если вы измените его, новый воркер будет развернут под новым субдоменом, и вам нужно будет удалить старый.

Во-вторых, main указывает точку входа для вашего воркера. Точкой входа для вашего воркера всегда является одна асинхронная функция с именем fetch .

Наконец, compatibility_date по умолчанию будет соответствовать дате создания рабочего. Это будет использоваться для того, чтобы будущие изменения Cloudflare не нарушили работу вашего воркера, по крайней мере, там, где это возможно.

источник/index.ts

Второй файл, который мы рассмотрим подробнее, — это точка входа для вашего приложения. На данный момент это выглядит довольно просто:

При доступе к вашему рабочему процессу он вызовет определенный здесь метод асинхронной выборки. Ему передаются три параметра:

  • request содержит типичную информацию, относящуюся к HTTP-запросу, такую ​​как метод (GET/POST и т. д.), запрошенный URL-адрес и любые заголовки.
  • env содержит переменные среды, такие как секреты, и в более поздних статьях дает вам доступ к хранилищу через автоматически созданные для вас переменные для простоты доступа. На данный момент мы должны определить пустой интерфейс, чтобы TypeScript оставался довольным.
  • ctx предоставляет некоторые дополнительные функции, такие как возможность вернуть ответ клиенту, но продолжить операции в рабочем потоке после отправки ответа.

Функция должна вернуть ответ, а наш рабочий процесс в настоящее время просто возвращает классический текст Hello World!.

Теперь, когда мы понимаем структуру рабочего процесса, давайте посмотрим на него в действии! Вы можете запустить npm start в корневом каталоге вашего проекта, перейти к https://0.0.0.0:8787 в браузере (или нажать b в терминале), и вы должны увидеть Hello World! текст на экране!

По умолчанию ваш воркер будет отвечать на запросы по URL-адресу вашего воркера, поэтому переход на https://0.0.0.0:8787/foo также вернет Hello World.

Стоит отметить: — когда вы запускаете npm start, вы все еще подключаетесь к сети Cloudflare, только через локальный прокси. Это хороший способ проверить ваш код на деле, но если у вас нет подключения к Интернету или вы хотите сэкономить на количестве запросов к вашей учетной записи, вы можете запустить wrangler dev --local и вместо этого использовать URL-адрес, указанный в этом выводе.

Далее мы представим наш простой API, добавив некоторые простые возможности маршрутизации в наш рабочий процесс.

Создайте простой API

На этом этапе мы могли бы развернуть нашего работника в Cloudflare и насладиться славой возвращения Hello World. Я думаю, вы могли бы ускорить развертывание рабочего процесса по умолчанию, от создания учетной записи до развертывания, примерно за минуту.

Тем не менее, я хочу показать вам кое-что более полезное, на что вы сможете затем опереться. В будущих статьях я доработаю API и добавлю более общие функции, такие как хранилище.

Но это забегаем вперед. А пока давайте создадим невероятно простой API, посвященный животным. Мы собираемся использовать itty-router для обработки маршрутов для нашего API, поэтому давайте установим его с помощью NPM, используя npm install itty-router.

Затем нам нужно добавить следующее в начало файла index.ts:

Код прокомментирован, чтобы объяснить, что происходит, но, по сути, вы можете зарегистрировать любое количество маршрутов с помощью itty-router. Если вы хотите зарегистрировать POST-запрос, вы должны сделать router.post вместо этого.

Наконец, мы обновляем метод fetch в нижней части файла index.ts для вызова маршрутизатора:

export default {
   async fetch(
      request: Request,
      env: Env,
      ctx: ExecutionContext
   ): Promise<Response> {
      return await router.handle(request)
   },
};

Все, что он делает, это передает запрос маршрутизатору, и если он находит сконфигурированный маршрут, соответствующий запросу, он выполняет логику, зарегистрированную для этого маршрута.

Теперь вы можете снова запустить npm start, нажать b, и вы получите 404. Если вы обновите URL-адрес до https://0.0.0.0:8787/animals, вы должны увидеть полный список возвращенных животных, а если вы попытаетесь, https://0.0.0.0:8787/animals/1, вы должны увидеть одно животное, корову. , вернулся.

Довольно простой API, но тем не менее API! Надеюсь, вы видите, как можно расширить это, чтобы создать реальный API, но чтобы закончить эту статью, прежде чем рассматривать более сложные темы, такие как хранилище, давайте развернем рабочего процесса по всему миру.

Разверните своего работника Cloudflare

Это часть большинства проектов, где вы можете стонать о развертывании приложения или должны вытащить свою кредитную карту. Однако не с Cloudflare. Давайте развернем полностью бесплатно и без проблем, выполнив следующие шаги:

  1. Выполнить npm run deploy. Это запустит рабочий процесс Wrangler для развертывания. Первый запуск занимает чуть больше времени, чем последующие.
  2. Откроется окно браузера. Вам нужно будет войти в свою учетную запись Cloudflare, если вы еще этого не сделали, и авторизовать ее.
  3. После авторизации вам будет предложено выбрать поддомен. Это будет использоваться для вашей учетной записи, и все рабочие будут размещены под worker-name.sub-domain-your-pick-now.workers.dev. Вы можете добавить свои собственные домены в будущем, а не использовать домены Cloudflare.
  4. Теперь ваш воркер будет загружен в Cloudflare. После загрузки он выведет URL-адрес, на котором размещен ваш воркер. Вы можете добавить больше работников в будущем, и они будут добавлены в новый субдомен (например, worker-2.sub-domain-your-pick-now.workers.dev)

Создание субдомена займет некоторое время, если вы впервые регистрируете субдомен. Вы можете зайти на панель инструментов по адресу https://dash.cloudflare.com/ и нажать Рабочие слева, а затем имя вашего нового воркера, и вы, вероятно, увидите небольшой кружок загрузки, говорящий, что он инициализирует ваш поддомен. .

После завершения вы можете получить доступ к URL-адресу вашего нового API в терминале. Чтобы увидеть, насколько быстрыми являются развертывания после первоначального развертывания, вы можете снова запустить npm run deploy, и оно, скорее всего, завершится через несколько коротких секунд. Распространение вашего воркера по всей сети Cloudflare может занять до минуты, поэтому, если вы не видите свои изменения сразу, скорее всего, он все еще кэширует ваши старые.

Краткое содержание

На этом статья о воркерах Cloudflare завершена, но ищите будущих, охватывающих хранилище и пользовательские домены. Вы можете найти полную документацию по всем функциям здесь. Вы можете увидеть полный рабочий исходный код на GitHub здесь.

Вы можете создать до 30 воркеров в своей бесплатной учетной записи, каждый с максимальным размером 1 МБ. Если ваш проект станет вирусным и вы превысите лимит в 100 000 запросов в день, то обновление до 10 миллионов запросов в месяц будет стоить всего 5 долларов в месяц. Полный прайс можно посмотреть здесь.

Если у вас есть какие-либо вопросы или проблемы, напишите мне комментарий, и я постараюсь помочь, чем смогу!

I released a book all about diagramming!
Click here to learn how to create diagrams to communicate relationships more directly and clearly than words ever can. Using only text-based markup, powered by Mermaid, create meaningful and attractive diagrams to document your domain, visualize user flows, reveal system architecture at any desired level, or refactor your code.