API obstinadas para aplicaciones web y móviles.
Lea esto en otros idiomas: 中文.
Elide es una biblioteca de Java que le permite configurar el servicio web GraphQL o API JSON con el modelo con un esfuerzo mínimo. Elide admite dos variantes de API:
Elide admite una serie de características:
Controle el acceso a campos y entidades a través de una sintaxis de permiso declarativo e intuitivo.
JSON-API y Graphql permite a los desarrolladores obtener gráficos de objetos completos en un solo ida y vuelta. Solo se devuelven elementos solicitados del modelo de datos. Nuestro enfoque obstinado para mutaciones aborda escenarios de aplicación común:
El filtrado, la clasificación, la paginación y la búsqueda de texto son compatibles con el cuadro.
Elide admite múltiples mutaciones del modelo de datos en una sola solicitud en JSON-API o GraphQL. Cree objetos, agréguelos a las relaciones, modifique o elimine juntos en una sola solicitud atómica.
Elide admite consultas analíticas contra modelos diseñados con su poderosa capa semántica. Elide API trabaja de forma nativa con Yavin para visualizar, explorar e informar sobre sus datos.
Explore, comprenda y componga consultas contra su API Elide a través de la documentación de arrogancia generada o el esquema GraphQL.
Personalice el comportamiento de las operaciones del modelo de datos con atributos calculados, anotaciones de validación de datos y solicite ganchos de ciclo de vida.
Elide es agnóstico para su estrategia de persistencia particular. Use un ORM o proporcione su propia implementación de un almacén de datos.
Puede encontrar más información sobre Elide en Elide.io.
Para probar un servicio de ejemplo de Elide, consulte el proyecto Elide-Spring-Boot-Ejemplo.
Alternativamente, use el proyecto Elide-standalone-examen que le permite configurar rápidamente una instancia local de Elide que se ejecuta dentro de una aplicación de embarcadero integrado.
La forma más sencilla de usar Elide es aprovechando a JPA para asignar sus modelos Elide a la persistencia:
Los modelos deben representar el modelo de dominio de su servicio web:
@ Entity
public class Book {
@ Id
private Integer id ;
private String title ;
@ ManyToMany ( mappedBy = "books" )
private Set < Author > authors ;
}Agregue anotaciones Elide para exponer sus modelos a través del servicio web y defina las políticas de seguridad para el acceso:
@ 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 ;
}Agregue los ganchos de ciclo de vida a sus modelos para incorporar la lógica comercial personalizada que ejecute en línea con operaciones CRUD a través del servicio web:
@ 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
}
}Mapear expresiones a funciones de seguridad o predicados que se llevan a la capa de persistencia:
@ SecurityCheck ( "Admin" )
public static class IsAdminUser extends UserCheck {
@ Override
public boolean ok ( User user ) {
return isUserInRole ( user , UserRole . admin );
}
}Para exponer y consultar estos modelos, siga los pasos documentados en la Guía Getting Start.
Por ejemplo, las llamadas de API, mira:
Los modelos analíticos que incluyen tablas, medidas, dimensiones y uniones se pueden crear como POjos o con un lenguaje de configuración HJSON amigable:
{
tables: [
{
name: Orders
table: order_details
measures: [
{
name: orderTotal
type: DECIMAL
definition: 'SUM({{$order_total}})'
}
]
dimensions: [
{
name: orderId
type: TEXT
definition: '{{$order_id}}'
}
]
}
]
}
Puede encontrar más información sobre la configuración o consulta de modelos analíticos aquí.
La seguridad se documenta en profundidad aquí.
Consulte el archivo Contributing.MD para obtener información sobre cómo involucrarse. Damos la bienvenida a problemas, preguntas y solicitudes.
Si está contribuyendo a Elide usando un IDE, como IntelliJ, asegúrese de instalar el complemento Lombok.
El chat comunitario ahora está en discordia. Únase haciendo clic aquí.
Este proyecto tiene licencia bajo los términos de la licencia de código abierto Apache 2.0. Consulte la licencia para los términos completos.
Introducción al video Elide
Cree un servicio de descanso API JSON con Spring Boot y Elide
Seguridad personalizada con un servidor API de Spring Boot/Elide JSON
Iniciar sesión en un servidor API de Boot Spring/Elide JSON
Asegurar un servicio de descanso API JSON con Spring Boot y Elide
Creación de entidades en un servidor API de Spring Boot/Elide JSON
Actualización y eliminación con un servidor API de Spring Boot/Elide JSON