2016-12-05 4 views
1

У нас есть задняя часть, которая предоставляет 50-60 API-интерфейсов Rest. В основном они будут потребляться автономными приложениями, такими как скрипт Python или Java-программа.Мета-язык для отдыха клиента

Одна из проблем, с которыми мы сталкиваемся, - это API-интерфейсы на очень узком уровне, они не соответствуют бизнес-варианту использования. Например, для выполнения бизнес-прецедента конечный пользователь может потребовать от 4 до 5 API.

Я хочу разработать DSL или какое-то решение, которое поможет обеспечить абстракцию высокого уровня, которая позволит конечным пользователям легко использовать деловые примеры. Это может быть либо автономная абстракция, либо «библиотека» для Python или язык программирования с очень высоким уровнем.

С целью объединения нескольких вызовов API Rest Out для создания транзакции бизнес-использования, каковы доступные подходы.

Thanks

ответ

1

Я думаю, что это хорошая идея. Чтобы определить, какое решение вы можете построить, вы должны рассмотреть различные аспекты:

  • Кто писал эти комбинации API?
  • Какая поддержка инструмента будет уместна? Я имею в виду проверку, подсветку синтаксиса, автозаполнение, проверки типов и т. Д.
  • Сколько времени имеет смысл инвестировать в него?

В зависимости от этих ответов вы можете рассмотреть различные варианты. Самый простой способ - создать DSL с использованием ANTLR. Вы получаете парсер, затем вы создаете какую-то программу для обработки АСТ и генерируете код для вызова API. Ваш пользователь просто должен будет редактировать эти программы в текстовом редакторе без поддержки. Преимущество этого заключается в том, что затраты на его реализацию уменьшаются, и ваш пользователь может писать эти программы с помощью простого текстового редактора.

В качестве альтернативы вы можете использовать языковой Workbench, такой как Xtext или Jetbrains MPS, для создания некоторых конкретных редакторов для вашего языка и обеспечения лучшего редактирования для ваших пользователей.

+0

Спасибо! Сначала я проверю ANTLR. Сначала я хотел бы прототипировать его с минимальными усилиями. – James

+0

Тогда, возможно, вы можете отметить ответ как принято: D –

+0

Сделано! Спасибо, очень полезный ввод – James