Expondo controller com @ApiResource

Ganhe até 18 endpoints por recurso ao estender as bases do starter. Read-only tambem e suportado.

Exemplo recomendado

import org.praxisplatform.uischema.annotation.ApiGroup;
import org.praxisplatform.uischema.annotation.ApiResource;

@ApiResource(ApiPaths.HumanResources.PESSOAS)
@ApiGroup("human-resources")
public class PessoaController extends AbstractCrudController<Pessoa, PessoaDTO, Long, PessoaFilterDTO> {
  // injete service/repository conforme a arquitetura da aplicacao
}
      

@ApiResource ja incorpora @RestController e @RequestMapping; nao e necessario declarar @RestController separadamente.

Prefira constantes de path no projeto da aplicacao e use @ApiGroup para organizar a documentacao OpenAPI por contexto.

Endpoints prontos

GET /{id}
GET /all
POST /filter
POST /filter/cursor
POST /locate
POST /stats/group-by
POST /stats/timeseries
POST /stats/distribution
GET /by-ids
POST /options/filter
POST /option-sources/{sourceKey}/options/filter
GET /options/by-ids
GET /option-sources/{sourceKey}/options/by-ids
POST /
PUT /{id}
DELETE /{id}
DELETE /batch
GET /schemas/schemas/filtered

O que o contrato atual entrega

Read-only (Views/@Immutable)

Use AbstractReadOnlyController para manter os endpoints de leitura e responder 405 Method Not Allowed nas operacoes de escrita.

O recurso continua com leitura, filtros, options, option-sources e schema x-ui, sem precisar duplicar controller.

Ver também