Web和移动应用程序的自电图API。
用其他语言阅读此内容:中文。
Elide是一个Java库,可让您以最少的精力设置模型驱动的GraphQL或JSON API Web服务。 Elide支持两个API的变体:
Elide支持许多功能:
通过声明的,直观的权限语法来控制对字段和实体的访问。
JSON-API和GraphQl使开发人员在一次往返中获取整个对象图。仅返回数据模型的请求元素。我们自以为是的突变方法解决了常见的应用方案:
框外支持过滤,排序,分页和文本搜索。
ELIDE支持JSON-API或GraphQL中单个请求中的多个数据模型突变。创建对象,将它们添加到关系中,在单个原子请求中修改或删除。
Elide支持针对用其强大的语义层制作的模型的分析查询。 Elide API与Yavin本地合作,可视化,探索和报告您的数据。
通过生成的Swagger文档或GraphQl模式探索,理解和撰写针对您的Elide API的查询。
用计算的属性,数据验证注释和请求生命周期挂钩自定义数据模型操作的行为。
Elide对您的特殊持久策略不可知。使用ORM或提供数据存储的实现。
有关ELIDE的更多信息,请参见Elide.io。
要尝试ELIDE示例服务,请查看Elide-Spring-boot-example项目。
另外,请使用Elide-StandalOne-示例项目,该项目允许您快速设置嵌入式Jetty应用程序中运行的ELIDE的本地实例。
使用Elide的最简单方法是利用JPA映射您的Elide模型持久性:
模型应代表您的Web服务的域模型:
@ Entity
public class Book {
@ Id
private Integer id ;
private String title ;
@ ManyToMany ( mappedBy = "books" )
private Set < Author > authors ;
}添加ELIDE注释既可以通过Web服务揭示您的模型,又要定义访问的安全策略:
@ 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 ;
}将生命周期挂钩添加到您的模型中,以嵌入自定义业务逻辑,该逻辑通过Web服务与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}}'
}
]
}
]
}
有关配置或查询分析模型的更多信息,请参见此处。
安全性在此处进行了深入记录。
请参考贡献文件,以获取有关如何参与的信息。我们欢迎问题,问题和提取请求。
如果您使用IDE(例如Intellij)为Elide做出贡献,请确保安装Lombok插件。
社区聊天现在正在不和谐。通过单击此处加入。
该项目是根据Apache 2.0开源许可证的条款许可的。请参阅《许可》以获取完整条款。
Elide视频介绍
使用Spring Boot和Elide创建JSON API REST服务
使用Spring Boot/Elide JSON API服务器进行自定义安全性
登录Spring Boot/Elide JSON API服务器
使用Spring Boot和Elide确保JSON API休息服务
在Spring Boot/Elide JSON API服务器中创建实体
使用Spring Boot/Elide JSON API服务器更新和删除