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服務器更新和刪除