iGRPIGRP 3.0Documentation

Model Designer

O designer de APIs de um projeto Spring Boot no iGRP Studio — módulos, esquemas (entidades), contracts (DTOs) e endpoints, e o código que o Studio gera a partir deles.

Num projeto Spring Boot, o Studio abre o designer de APIs: constróis a aplicação de forma visual — módulos por domínio, esquemas (entidades JPA), contracts (DTOs com validações) e endpoints REST — e o Studio gera o código correspondente.

1Módulo
2Esquemas
3Contracts
4Endpoints
✓Código gerado

A árvore de APIs

À esquerda, o painel APIs mostra os módulos do projeto. Cada módulo tem Endpoints, Contract, Esquemas e GraphQL; Componentes é o módulo partilhado (shared).

Para criar, passa o rato sobre um nó e usa o + que aparece à direita — por exemplo, no nó Esquemas: Novo Schema, Importar tabela de base de dados, Importar (ficheiros JSON Schema) e Diagrama ERD. O + da barra de separadores abre também um separador New… com Novo Esquema (⌘M), Novo Endpoint (⌘E) e Novo Contract (⌘O).

Árvore de APIs com o módulo pedidos, o endpoint POST criarPedido e o módulo partilhado Componentes

Esquemas e contracts criados pelo separador New… vão para o módulo partilhado

O editor não pergunta o módulo: o que crias a partir do + da barra de separadores fica em Componentes (shared). Para criar dentro de um módulo, usa o + do nó desse módulo na árvore.

1. Criar um módulo

Organiza a aplicação em módulos por domínio. O + no topo do painel APIs abre Criar novo módulo: dá-lhe um nome (por exemplo pedidos) e Guardar módulo.

Diálogo Criar novo módulo com o nome pedidos

2. Esquemas

Os esquemas são as entidades do domínio, mapeadas para tabelas da base de dados.

Editor do esquema Pedido com os campos id, requerente, data e estado
Campo
Nome / Nome da TabelaNome da entidade (Pedido) e da tabela (t_pedido, preenchido a partir do nome)
AuditoriaRegista automaticamente as datas de criação e alteração
Gerar APIs CRUDGera os endpoints CRUD do esquema
ODataEm breve

Os separadores Campos, Índices e Restrições Únicas definem a estrutura. Cada campo tem nome e tipo — Tipo de dados (agrupados em Timing, Numeric, Text, Media, Json, Misc, Generic, Uri), Enum ou Relação (ver Diagrama ER). O botão ao lado do tipo abre as propriedades:

Propriedades do campo requerente com Obrigatório ativo e comprimento 150
Chave Primária
Identifica o campo como chave primária (o id já vem marcado)
Obrigatório
Campo NOT NULL
Único
Valor único na tabela
Comprimento
Comprimento máximo
Valor Padrão
Valor predefinido

3. Contracts

Os contracts (DTOs) transportam dados entre as camadas — por exemplo o corpo de um pedido à API.

Editor do Contract PedidoRequest com os atributos requerente e tipo
Campo
KindData Transfer Object
NomeNome do contract (PedidoRequest)
TemplateDefault
extendsContract a estender (opcional)
Ativar Validação Personalizada / Somente LeituraValidação própria do contract / contract só de leitura

Cada atributo tem validações próprias, no botão ao lado do tipo:

Validações do atributo requerente com Obrigatório e tamanho máximo 150
Obrigatório
Campo obrigatório
Antes / Depois
Datas no passado ou no futuro
Email / URL
Formato de email ou URL
Tamanho Mínimo / Máximo
Limites de comprimento
Regex
Expressão regular

4. Endpoints

Um endpoint agrupa ações (operações HTTP). Novo Endpoint abre o editor de uma ação:

Escolhe o Método (GET, POST, PUT, PATCH, DELETE…), o path da ação (pedidos) e o Nome da Ação (criarPedido).
Em Request, define Parâmetros, Corpo e Cabeçalhos. Num corpo JSON, Set Type → Reference other Object referencia um contract (PedidoRequest).
Em Response, define a resposta; em Security, as permissões e funções (ver abaixo).
Salvar. Na primeira ação, o Studio pede os dados do endpoint.
Ação POST pedidos com o corpo JSON a referenciar o contract PedidoRequest

O diálogo Criar Novo Endpoint pede o Nome do Endpoint (Pedidos, sem espaços nem hífenes, até 20 caracteres), o Caminho Base, o Módulo e a Descrição.

Diálogo Criar Novo Endpoint com o nome Pedidos, caminho base api/v1, módulo pedidos e descrição

Caminho Base sem barra inicial

Escreve api/v1, não /api/v1. Com a barra, a gravação falha (basePath: must match pattern) e a ação fica bloqueada até fechares o separador.

Security

O separador Security de uma ação define quem lhe pode aceder:

  • Permissões — escreve o nome (por exemplo pedidos.criar) e Adicionar. O Operador de Permissões decide se é preciso qualquer (OR) ou todas (AND).
  • Funções — funções exigidas (por exemplo OPERADOR); basta o utilizador ter uma.

O Studio gera as anotações de permissão no controlador — ver Permissões no backend.

Código gerado

Ao gravar, o Studio gera o código do projeto Spring Boot. No estilo Technical (o predefinido):

Entidades JPA
Uma por esquema, com auditoria opcional
Repositórios
Spring Data JPA; expostos em REST com Gerar APIs CRUD
DTOs
A partir dos contracts, com as validações
Controladores
A partir dos endpoints, com as permissões do separador Security
Serviços
Interface gerada; a implementação é tua

Onde fica cada ficheiro, e o que podes editar, está em Projeto Spring Boot.


Módulo partilhado

O projeto inclui o módulo Componentes (shared), criado automaticamente, para o que é comum a vários domínios — esquemas, contracts, utilitários, constantes e exceções.

Módulo Componentes na árvore de APIs com o contract PedidoRequest e os esquemas Pedido e TipoPedido

Eliminar recursos

Um esquema, contract ou ação abertos têm o botão de eliminar (lixo) ao lado de Salvar.

Botão de eliminar realçado no cabeçalho do editor de um contract

Verifica as dependências

Antes de eliminar, confirma que nada depende do recurso — um contract usado no corpo de uma ação, uma entidade referenciada numa relação.

How is this guide?

Última atualização: