APIs opinativas para aplicativos web e móveis.
Leia isso em outros idiomas: 中文.
A Elide é uma biblioteca Java que permite configurar o serviço de grafql ou json da JSON com um esforço mínimo. Elide suporta duas variantes de APIs:
Elide suporta vários recursos:
Controle o acesso a campos e entidades por meio de uma sintaxe de permissão intuitiva e declarativa.
O JSON-API & GraphQL permite que os desenvolvedores busquem gráficos de objetos inteiros em uma única ida e volta. Somente elementos solicitados do modelo de dados são retornados. Nossa abordagem opinativa para mutações aborda cenários de aplicação comuns:
Filtragem, classificação, paginação e pesquisa de texto são suportadas fora da caixa.
O ELIDE suporta várias mutações no modelo de dados em uma única solicitação no JSON-API ou GraphQL. Crie objetos, adicione -os a relacionamentos, modifique ou exclua em uma única solicitação atômica.
A Elide suporta consultas analíticas contra modelos criados com sua poderosa camada semântica. Elide APIs trabalha nativamente com Yavin para visualizar, explorar e relatar seus dados.
Explore, compreenda e compor consultas contra sua API Elide por meio de documentação de swagger gerada ou esquema grafql.
Personalize o comportamento das operações do modelo de dados com atributos computados, anotações de validação de dados e solicita ganchos de ciclo de vida.
Elide é agnóstico à sua estratégia de persistência específica. Use um ORM ou forneça sua própria implementação de um armazenamento de dados.
Mais informações sobre Elide podem ser encontradas em Elide.io.
Para experimentar um serviço de exemplo Elide, consulte o projeto Elide-Spring-Boot-Exemplo.
Como alternativa, use o projeto ELIDE-S-STANDALONE-EXAMPLE, que permite configurar rapidamente uma instância local de Elide em um aplicativo de jetty incorporado.
A maneira mais simples de usar o Elide é aproveitando o JPA para mapear seus modelos Elide para persistência:
Os modelos devem representar o modelo de domínio do seu serviço da web:
@ Entity
public class Book {
@ Id
private Integer id ;
private String title ;
@ ManyToMany ( mappedBy = "books" )
private Set < Author > authors ;
}Adicione as anotações Elide para expor seus modelos através do serviço da Web e definir políticas de segurança para acesso:
@ 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 ;
}Adicione ganchos de ciclo de vida aos seus modelos para incorporar a lógica de negócios personalizada que execute a inline com operações CRUD através do serviço da 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
}
}MAP Expressões para funções de segurança ou predicados que são empurrados para a camada de persistência:
@ SecurityCheck ( "Admin" )
public static class IsAdminUser extends UserCheck {
@ Override
public boolean ok ( User user ) {
return isUserInRole ( user , UserRole . admin );
}
}Para expor e consultar esses modelos, siga as etapas documentadas no guia de início do início.
Por exemplo, chamadas de API, consulte:
Modelos analíticos, incluindo tabelas, medidas, dimensões e junções, podem ser criados como Pojos ou com uma amigável linguagem de configuração de HJSON:
{
tables: [
{
name: Orders
table: order_details
measures: [
{
name: orderTotal
type: DECIMAL
definition: 'SUM({{$order_total}})'
}
]
dimensions: [
{
name: orderId
type: TEXT
definition: '{{$order_id}}'
}
]
}
]
}
Mais informações sobre a configuração ou consulta de modelos analíticos podem ser encontrados aqui.
A segurança está documentada em profundidade aqui.
Consulte o arquivo contribuinte.md para obter informações sobre como se envolver. Congratulamo -nos com questões, perguntas e solicitações.
Se você estiver contribuindo para o Elide usando um IDE, como o Intellij, instale o plugin LOMOMBOK.
O bate -papo da comunidade está agora na discórdia. Junte -se clicando aqui.
Este projeto está licenciado nos termos da licença de código aberto Apache 2.0. Consulte a licença para os termos completos.
Introdução ao vídeo Elide
Crie um serviço de repouso da API JSON com bota de primavera e elide
Segurança personalizada com um servidor API de bota de primavera/Elide JSON
Faça login em um servidor API de bota de primavera/Elide JSON
Proteger um serviço de repouso da API JSON com bota de primavera e elide
Criação de entidades em um servidor API de bota de primavera/Elide JSON
Atualizando e excluindo com um servidor API de bota de primavera/Elide JSON