REST API для MongoDB без кода: вебхук, операция с базой и ответ

REST API для MongoDB без кода в nana800 собирается из готового шаблона: вебхук принимает запрос с коллекцией, фильтром и данными, блок MongoDB выполняет операцию с вашей базой, а результат уходит обратно отправителю. Свой сервер не нужен, достаточно строки подключения к базе MongoDB или Atlas. Один запрос к такому API стоит три запуска базового блока, а баланс каждый месяц бесплатно пополняется до 350 ₽.

Собрать в конструкторе
Схема шаблона «REST API для MongoDB» в конструкторе nana800

Цепочка блоков

  1. 1

    Триггер

    «button» запускает схему вручную для проверки. Блок базы берёт коллекцию и фильтр из запроса, поэтому для проверки кнопкой впишите в его поля пробные значения или проверяйте схему на странице «API».

  2. 2

    Триггер · Вебхук (триггер)

    «webhook» - адрес вашего API. Принимает JSON с полями collection (коллекция), filter (фильтр, его нужно присылать всегда, хотя бы {}) и data (данные для записи).

  3. 3

    Действие · Операция с базой MongoDB

    «Mongodb Database external operation» выполняет операцию с вашей базой. В шаблоне выбрана FIND_ONE - найти одну запись, коллекция и фильтр берутся из запроса, а строку подключения вписываете вы.

  4. 4

    Действие · Ответ на вебхук

    «webhook response» отвечает отправителю кодом 200 и JSON с полем success и результатом операции в поле data.

Для каких задач подходит

  • Отдавать сайту или мобильному приложению данные из MongoDB: товар, заказ, профиль клиента
  • Принимать заявки и заказы с сайта и сохранять их в коллекцию операцией CREATE_ONE
  • Менять статус заказа по запросу из CRM или платёжного сервиса через оператор $set
  • Собрать прототип приложения без своего сервера: каждый адрес API - отдельный вебхук со своей операцией
  • Дать доступ к базе сервисам без кода: любой сервис, который умеет отправлять запросы, читает и пишет записи

Как настроить

  1. 1

    Откройте шаблон

    В конструкторе откройте «Готовые решения», найдите шаблон «Simple REST API with MongoDB» и нажмите «Использовать». В выбранном проекте появится схема из четырёх уже связанных блоков.

  2. 2

    Вставьте строку подключения

    В блоке «Mongodb Database external operation» замените текст в «Строке подключения» адресом вашей базы, например mongodb+srv://логин:пароль@cluster0.xxxxx.mongodb.net/имя_базы. Особые символы в пароле замените кодами, например @ на %40. База должна быть доступна из интернета: в Atlas разрешите подключения в настройках сетевого доступа.

  3. 3

    Выберите операцию и коллекцию

    В шаблоне выбрана FIND_ONE. Для новых записей выберите CREATE_ONE: поле data из запроса попадёт в «Данные для записи». Для правки выберите UPDATE_ONE, тогда data пишется с оператором, например {"$set": {"status": "done"}}. Надёжнее вписать название коллекции прямо в блок, чем брать его из запроса.

  4. 4

    Настройте вебхук

    В блоке «webhook» выберите method POST: в шаблоне стоит GET, а данные приходят в теле запроса. В path впишите путь, например /orders/find. Для других операций добавьте в схему ещё вебхуки со своими путями, у каждого свой блок MongoDB и свой ответ.

  5. 5

    Поправьте тело ответа

    В блоке «webhook response» результат подставлен в кавычках, а найденная запись - это объект JSON, поэтому ответ получается неверным JSON. Перенесите тело в поле body json, уберите кавычки вокруг подстановки result, а поле body raw очистите. Тогда отправитель получит запись обычным JSON.

  6. 6

    Включите схему и проверьте

    Включите схему, нажмите кнопку «API» в конструкторе и на вкладке «Попробовать» отправьте JSON вида {"collection": "orders", "filter": {"status": "new"}}. Запрос по-настоящему выполняется в вашей базе, в ответе придёт найденная запись. Включённая схема стоит 0,42 ₽ в час.

Сервисы в шаблоне

  • Вебхук

    Принимайте заявки с сайта и события сервисов через вебхук и отвечайте на запросы без своего сервера и кода. Бесплатный баланс каждый месяц, карта не нужна.

  • MongoDB

    Подключите MongoDB или Atlas к nana800: ищите, создавайте, обновляйте и удаляйте записи из схемы без своего сервера. Бесплатный баланс каждый месяц, карта не нужна.

Частые вопросы

Один запрос стоит три запуска базового блока: вебхук считается как один, операция с базой как два, ответ бесплатный. 1 000 запусков базового блока стоят 100 ₽. API отвечает, только пока схема включена, а час включённой схемы стоит 0,42 ₽. Баланс каждый месяц бесплатно пополняется до 350 ₽, карта не нужна, но при круглосуточной работе большая часть этой суммы уходит на часы схемы.

Адрес вебхука публичный: запрос может отправить любой, кто его знает. В шаблоне коллекция и фильтр приходят из запроса, поэтому впишите коллекцию прямо в блок и подключайтесь пользователем базы с правами только на нужные коллекции. Для закрытого API проверяйте секретный заголовок блоком «condition» или токен блоком «validate jwt».

Восемь: FIND_ONE и FIND_MANY ищут записи, CREATE_ONE и CREATE_MANY создают, UPDATE_ONE и UPDATE_MANY обновляют, DELETE_ONE и DELETE_MANY удаляют. Один блок выполняет одну выбранную операцию, поэтому для каждой операции заведите свой вебхук со своим путём. FIND_MANY отдаёт до 1000 записей за запрос.

Блок ответа в шаблоне отправит success: true в любом случае. Поставьте перед ответом «condition» по полю success блока MongoDB и при ошибке верните код 400 или 500 с текстом из error_text: там понятное описание причины. Неудачная операция с баланса не списывается.

Да, блок принимает строки mongodb+srv:// от Atlas и обычные mongodb:// от своего сервера. В Atlas разрешите подключения из интернета в настройках сетевого доступа. Вход только по логину и паролю: базы во внутренней сети, прокси и файлы сертификатов не поддерживаются.

Код писать не нужно, но фильтр и данные задаются в JSON, как в самой MongoDB, поэтому шаблон удобнее тем, кто знаком с базой. Идентификатор в фильтре пишется как {"_id": {"$oid": "..."}}, дата как {"$date": "2025-01-01T00:00:00Z"}.

Соберите первую схему бесплатно

Регистрация бесплатная, карта не нужна. Каждый месяц баланс бесплатно пополняется до 350 ₽, этого хватает примерно на 3 500 запусков простых блоков.

Собрать в конструкторе