Участие API для веб -и мобильных приложений.
Прочитайте это на других языках: 中文.
Elide - это библиотека Java, которая позволяет настроить модель, управляемую GraphQL или JSON API, с минимальными усилиями. Элид поддерживает два варианта API:
Элид поддерживает ряд функций:
Контрольный доступ к полям и объектам через декларативный, интуитивно понятный синтаксис разрешений.
JSON-API & GRAPHQL позволяет разработчикам приносить целые графики объектов в одну обратную поездку. Только запрашиваемые элементы модели данных возвращаются. Наш самоуверенный подход к мутациям рассматривает общие сценарии применения:
Фильтрация, сортировка, лиц и текстовый поиск поддерживаются из коробки.
Elide поддерживает несколько мутаций модели данных в одном запросе в JSON-API или GraphQL. Создайте объекты, добавьте их в отношения, изменяйте или удаляйте вместе в одном атомном запросе.
Элид поддерживает аналитические запросы против моделей, созданных с его мощным семантическим слоем. Elide API -интерфейс работают с Явином, чтобы визуализировать, исследовать и сообщать о ваших данных.
Исследуйте, понимайте и составьте запросы против вашего API Elide с помощью сгенерированной документации Swagger или схемы GraphQL.
Настройте поведение операций модели данных с помощью вычисленных атрибутов, аннотаций валидации данных и запрашивания жизненного цикла.
Elide является агностикой для вашей конкретной стратегии настойчивости. Используйте ORM или предоставьте собственную реализацию хранилища данных.
Более подробную информацию об Elide можно найти на Elide.io.
Чтобы попробовать сервис Elide, ознакомьтесь с проектом Elide-Spring-Boot-Boot-Example.
В качестве альтернативы используйте проект Elide-Standalone-пример, который позволяет быстро настроить локальный экземпляр Elide, работающего внутри встроенного приложения.
Самый простой способ использования Elide - это использовать JPA для сопоставления ваших моделей Elide на стойкость:
Модели должны представлять доменную модель вашего веб -службы:
@ Entity
public class Book {
@ Id
private Integer id ;
private String title ;
@ ManyToMany ( mappedBy = "books" )
private Set < Author > authors ;
}Добавьте аннотации Elide, чтобы как разоблачить ваши модели через веб -сервис, так и определить политики безопасности для доступа:
@ Entity
@ Include ( rootLevel = true )
@ ReadPermission ( "Everyone" )
@ CreatePermission ( "Admin OR Publisher" )
@ DeletePermission ( "None" )
@ UpdatePermission ( "None" )
public class Book {
@ Id
private Integer id ;
@ UpdatePermission ( "Admin OR Publisher" )
private String title ;
@ ManyToMany ( mappedBy = "books" )
private Set < Author > authors ;
}Добавьте крючки для жизненного цикла к вашим моделям, чтобы внедрить пользовательскую бизнес -логику, которая выполняет встроенные с операциями CRUD через веб -сервис:
@ Entity
@ Include ( rootLevel = true )
@ ReadPermission ( "Everyone" )
@ CreatePermission ( "Admin OR Publisher" )
@ DeletePermission ( "None" )
@ UpdatePermission ( "None" )
@ LifeCycleHookBinding ( operation = UPDATE , hook = BookCreationHook . class , phase = PRECOMMIT )
public class Book {
@ Id
private Integer id ;
@ UpdatePermission ( "Admin OR Publisher" )
private String title ;
@ ManyToMany ( mappedBy = "books" )
private Set < Author > authors ;
}
public class BookCreationHook implements LifeCycleHook < Book > {
@ Override
public void execute ( LifeCycleHookBinding . Operation operation ,
LifeCycleHookBinding . TransactionPhase phase ,
Book book ,
RequestScope requestScope ,
Optional < ChangeSpec > changes ) {
//Do something
}
}Выражения карты функций безопасности или предикатов, которые подталкиваются к слою постоянства:
@ SecurityCheck ( "Admin" )
public static class IsAdminUser extends UserCheck {
@ Override
public boolean ok ( User user ) {
return isUserInRole ( user , UserRole . admin );
}
}Чтобы разоблачить и запрашивать эти модели, выполните шаги, документированные в руководстве по началу работы.
Например, API вызовы, посмотрите на:
Аналитические модели, включая таблицы, измерения, измерения и соединения, могут быть созданы либо в виде POJOS, либо с дружественным языком конфигурации HJSON:
{
tables: [
{
name: Orders
table: order_details
measures: [
{
name: orderTotal
type: DECIMAL
definition: 'SUM({{$order_total}})'
}
]
dimensions: [
{
name: orderId
type: TEXT
definition: '{{$order_id}}'
}
]
}
]
}
Более подробную информацию о настройке или запросе аналитических моделей можно найти здесь.
Безопасность здесь задокументирована.
Пожалуйста, обратитесь к файлу Anforming.md для получения информации о том, как принять участие. Мы приветствуем проблемы, вопросы и запросы.
Если вы участвуете в Elide, используя IDE, например, IntelliJ, обязательно установите плагин Lombok.
Общественный чат сейчас находится в раздоре. Присоединяйтесь, нажав здесь.
Этот проект лицензирован в соответствии с условиями лицензии Apache 2.0 с открытым исходным кодом. Пожалуйста, обратитесь к лицензии на полные условия.
Вступление в видео Elide
Создайте службу REST JSON API с Spring Boot и Elide
Пользовательская безопасность с Spring Boot/Elide JSON API -сервером
Вход в Spring Boot/Elide JSON API -сервер
Защита службы REST JSON API с помощью Spring Boot и Elide
Создание сущностей в Spring Boot/Elide JSON API -сервер
Обновление и удаление с помощью Spring Boot/Elide JSON API -сервер