No-as-a-Service — API для тех, кто устал говорить «нет»

09 May, 2026
7,799
🔱 488
👥 19

Знакомая ситуация? Пятница, пять вечера, вы уже мысленно допиваете свой смузи, а к вам подкрадывается менеджер с просьбой «посмотреть одну маааленькую задачку». Или друг в очередной раз зовет помочь с его «гениальным стартапом», который выглядит как Uber для выгула хомячков. Сказать «да» — значит подписаться на бессонные выходные. Сказать «нет» — прослыть букой и эгоистом.

Кажется, разработчик под ником hotheadhacker столкнулся с этой дилеммой столько раз, что решил автоматизировать процесс. Так на свет появился No-as-a-Service — микросервис, который делает ровно одну вещь, но делает ее с юмором и стилем: генерирует причины для отказа.

No-as-a-Service Banner

Что это такое и зачем оно нужно?

No-as-a-Service (NaaS) — это до смешного простой API, который по одному GET-запросу возвращает случайную причину для отказа. Никакой аутентификации, никаких сложных эндпоинтов. Просто, как curl, и полезно, как умение вовремя закрыть ноутбук.

Зачем это нужно разработчику? Ну, кроме очевидного развлечения, у проекта есть несколько интересных применений:

Реклама
  • Заглушки и моки. Вместо скучного «WIP» или «Coming soon» на нереализованной фиче можно выводить остроумный отказ от API.
  • Боты для чатов. Представьте Slack-бота, который на каждое упоминание @here в нерабочее время отвечает фразой вроде: «Боюсь, это нарушит мой астральный баланс».
  • Забавные страницы ошибок. Почему бы не сделать страницу 403 Forbidden чуть более человечной и менее пугающей?
  • Обучение и пет-проекты. Это идеальный пример минималистичного API. Хотите показать новичку, как работать с fetch? Дайте ему этот эндпоинт.

Как это работает?

Вся магия сводится к одному простому запросу. Открываете терминал и пишете:

curl https://naas.isalman.dev/no

В ответ прилетает JSON с одной-единственной парой ключ-значение:

{
  "reason": "This feels like something Future Me would yell at Present Me for agreeing to."
}

Перевод: «Чувствую, что Будущий Я будет кричать на Нынешнего Меня за то, что я на это согласился».

Или вот еще вариант:

{
  "reason": "My cat said no."
}

Перевод: «Мой кот сказал нет».

В базе проекта более 1000 подобных перлов на английском языке — от вполне реалистичных до совершенно абсурдных. Лимит — 120 запросов в минуту с одного IP, чего более чем достаточно для любых экспериментов.

Заглянем под капот

Самое прекрасное в этом проекте — его простота. Если вы откроете репозиторий, то увидите, что вся архитектура — это:

  • index.js: Крошечный сервер на Express.js.
  • reasons.json: Огромный JSON-файл, где и хранятся все сокровища — те самые 1000+ причин для отказа.
  • package.json: Всего две зависимости — express и express-rate-limit.

Никаких баз данных, фреймворков или сложной логики. Это отличный пример того, как можно сделать полезный и популярный сервис (у проекта тысячи звезд на GitHub!) с минимальными усилиями.

Хочу себе такой же!

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

  1. Клонируем репозиторий:
    git clone https://github.com/hotheadhacker/no-as-a-service.git
    cd no-as-a-service
    
  2. Устанавливаем зависимости:
    npm install
    
  3. Запускаем сервер:
    npm start
    

Готово! Ваш личный генератор отмазок работает на http://localhost:3000/no. Можно добавить в reasons.json свои любимые фразы и использовать в локальных проектах.

Кто уже использует «Нет-как-Сервис»?

Проект оказался настолько заразительным, что у него появились последователи и форки. Например:

  • no-as-a-service-rust: Реализация того же API, но на языке Rust.
  • NoAsAnApp: Простое нативное Android-приложение, которое показывает случайный отказ по нажатию кнопки.
  • Gerador de Frases Aleatórias: Бразильский форк на Python с фразами на португальском и веб-интерфейсом.

Это доказывает, что хорошая и забавная идея быстро находит отклик в сообществе.

No-as-a-Service — это не тот инструмент, который перевернет вашу карьеру или поможет написать код без багов. Но это блестящий пример того, каким должен быть хороший пет-проект: простой, сфокусированный, решающий одну (пусть и шуточную) проблему и приносящий удовольствие как создателю, так и пользователям.

Кому стоит обратить внимание:

  • Новичкам: чтобы посмотреть на устройство простого, но законченного API.
  • Опытным разработчикам: чтобы вдохновиться и, возможно, создать свой микросервис с блэкджеком и... ну, вы поняли.
  • Всем остальным: чтобы просто улыбнуться и пополнить свой арсенал вежливых (и не очень) отказов.

Так что в следующий раз, когда вас попросят «быстренько поправить кнопочку», вы знаете, какой curl отправить в ответ.

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.