Smithy: простой язык Amazon для определения сервисов и SDK
Smithy — это не зависящий от протокола язык определения интерфейса и набор инструментов для создания клиентов, серверов и документации для нескольких языков программирования. Модели Smithy определяют сервис как набор ресурсов, операций и форм.
Преимущества:
- Основа на языке определения интерфейсов, который используется в Amazon и AWS;
- Все метаданные, свойственные AWS, в Smithy реализованы в виде отдельных пакетов;
- Smithy предназначен для работы генерации кода для нескольких языков программирования. Модели Smithy полностью нормализована, что дает всем сгенерированным типа явное имя и упрощает просмотр, проверку и сравнение моделей.
- Не зависит от протокола. Это означает, что модель является абстракцией, которая определяет правила и семантику взаимодействия клиента и сервера;
- Расширяемая метамодель Smithy может развиваться и собирать больше информации об услугах. Черты используются для расширения модели и добавления возможностей, которые не являются частью основной спецификации;
- Настраиваемые стандарты API обеспечивают автоматическое соответствие API ожиданиям клиентов. Правила проверки могут быть общими и применяться ко всем API в компании;
- Модели Smithy определяются ресурсами и операциями. Определение сервисов с ресурсами позволяет улучшить API и предоставляет обширную информацию для преобразования моделей;
- Упрощает разработчикам поддержку SDK AWS с открытым исходным кодом.
Создание моделей с помощью Smithy
- Чтобы начать работу, нужно установить плагин Smithy Gradle Plugin. Он может создавать артефакты из моделей Smithy, генерировать JAR-файлы, содержащие модели Smithy, найденные в проектах Java и генерировать JAR-файлы, содержащие отфильтрованные проекции моделей Smithy. Создайте файл
smithy-build.json
:
{ "version": "1.0" }
- Затем активируйте Smithy Gradle Plugin в файле
build.gradle.kts
и запуститеgradlebuild
:
plugins { id("software.amazon.smithy").version("0.5.3") }
- Создайте модель
mode/main.smithy
:
namespace com.example service ExampleService { version: "2020-05-27" }
Вот и все! Больше примеров по созданию моделей можно посмотреть здесь. Библиотека распространяется под лицензией Apache 2.0. Репозиторий GitHub доступен по ссылке.
Сообщить об опечатке
Текст, который будет отправлен нашим редакторам: