Сарай: Заготовка данных API сделана правильно

'Yet Another Rest API Stubber'.split(' ').reverse().map(item => item[0].toLowerCase()).join('')

Абсолютно бесплатный заглушитель данных API с открытым исходным кодом, предназначенный для лучшего и более согласованного макета API между проектами.

В Contactlab мы разрабатываем веб-приложения, которые должны взаимодействовать с большим набором разнородных веб-сервисов RESTful.
Эти веб-сервисы могут страдать от простоя или могут быть временно недоступны, особенно при использовании в среде разработки.
Итак, мы начали думать об инструменте, который позволил бы нам разрабатывать наши приложения без строгой зависимости от базовых сервисов.

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

Итак, мы начали думать о Сарай.

Что такое Сарай?

Saray - это облегченный стабилизатор данных API с открытым исходным кодом, написанный на Node.js.
В своей первой версии он брал файлы JSON, структурированные в иерархии файловой системы, и обслуживал их как настоящую конечную точку API.

Простая часть

По своей сути Сарай может трансформировать что-то вроде этого:

В полный ответ HTTP:

Имя файла также может быть более сложным, например

simple?param=value.GET.json
simple.POST.json
anotherCall.PATCH.json

Обратите внимание, как HTTP-команда просто указана в имени файла, поэтому вы без проблем можете заглушить все, что захотите.

Это была достаточно простая часть для нетехнических специалистов.

Сильная часть

Однако разработчикам программного обеспечения в Contactlab требовалось что-то более мощное, поэтому в следующих версиях Saray превратился в более полный инструмент для разработчиков, и теперь он может интерпретировать файлы Javascript на лету.

Итак, в дополнение к ранее существовавшей заглушке данных JSON, Saray может обрабатывать что-то вроде этого:

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

Сегодня Сарай может:

  • данные-заглушки в формате JSON и Javascript
  • выступать в качестве прокси между клиентом и конечной точкой API: поэтому, если вы определяете конечную точку, saray может перенаправлять ваши вызовы, которые не содержат заглушенных данных, напрямую на ваши настоящие API.
  • обрабатывать предполетные звонки
  • правильно пересылать заголовки HTTP
  • обрабатывать тайм-аут реальной конечной точки
  • обрабатывать динамическую подстроку в путях URL

Дальнейшее развитие

Внутри компании мы работаем для «Saray as a servic e»: Saray как длительный процесс для обслуживания наших автоматизированных конвейеров тестирования.

Другой интересной функцией будет запись сеанса HTTP с использованием Saray в качестве прокси-сервера с намерением удалить часть повторяющейся работы, фактически затрачиваемой на создание поддельных данных.

У нас также есть нерешенная проблема, связанная с запросом функции при дросселировании для имитации медленного ответа сервера в тяжелых условиях.

использованная литература

Saray - это проект на основе Node.js, построенный на основе библиотек с открытым исходным кодом, таких как Express, Commander и Bunyan.

Существует пакет NPM https://www.npmjs.com/package/saray, поэтому вы можете установить его в масштабе всей системы или как внутреннюю зависимость проекта.

Исходный код доступен на GitHub по адресу https://github.com/contactlab/saray, так что вы можете поддержать Saray, оставив вам отзыв или взломав наш код!