Существует ли не зависящий от языка генератор API для упаковки служб данных Text / XML / JSON? - PullRequest
3 голосов
/ 02 декабря 2011

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

(1) Существует ли инструмент генерирования API в стиле hibernate / ibatis / SQLAlchemy для мира REST?В частности, я заинтересован в размещении красивого, чистого API на сервере SOLR, который обслуживает данные json.Или, может быть, я просто хочу создать серверный инструмент, который может запрашивать большой список текстовых файлов и обслуживать эти файлы как объекты, доступные через HTTP ...

Однако здесь есть одна загвоздкачто я хочу сделать это независимым от языка способом (используя аналогию спящего режима, я бы хотел, чтобы мой генератор спящего режима генерировал классы DAO как в PHP, так и в Java, например).

(2) Более обобщенно --- Есть ли общий способ создания apis объекта hibernate / ibatis style, который работает в современном мире, управляемом http, NoSQL;скрытие основных сложностей расположения данных, структур хранения данных, обработки соединений, вежливости и т. д ...?

1 Ответ

1 голос
/ 02 декабря 2011

Подумайте о создании собственной библиотеки, например StringTemplate .

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

Вы также можете использовать несколько библиотек для одной среды выполнения, например, в java вы можете генерировать чистые сервлеты или, возможно, позволить пользователю использовать такие библиотеки, как Restlets или Spring Mvc 3, которые поддерживают аннотированный стиль.

РЕДАКТИРОВАТЬ: уточнение возможного решения

  1. Создать способ описания вызовов функций JSON, аналогичный WSDL для Soap (не знаю, существует ли он уже)
  2. Создать анализатор, если он еще не существует для этих метаданных.
  3. Для каждого целевого языка и среды выполнения создайте шаблоны StringTemplate и некоторую склеивающую логику, чтобы выбрать правильные шаблоны на выходе. Каждый шаблон должен сводить данные из ваших проанализированных метаданных в сгенерированный класс.
  4. Рассмотрите возможность встраивания инструмента в существующую инфраструктуру инструментов платформы (плагин maven, ruby ​​gem и т. Д.) *

Альтернативный подход: Для каждой целевой среды выполнения создайте библиотеку привязки данных, которая будет представлять удаленный API-интерфейс JSON. Создайте описание метаданных привязки данных, которое будет использоваться для описания того, как встраивать данные в существующие объекты целевого языка. В Java это можно сделать, например, в XML или с использованием аннотаций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...