OnBlock
OnBlock roda uma vez na subida do REST, antes do mapa de serviços ser publicado. Tudo que não estiver em block() continua liberado — o oposto é o OnAllow (lista branca).
Quando usar
- Modo manutenção — bloquear APIs temporariamente
- Ocultar endpoints internos da documentação/listagem
- Bloquear verbos específicos (
POSTliberado,DELETEbloqueado)
Onde configurar
A chave OnBlock só é lida no Thread Pool (não nos Slaves). Exemplo:
[THREAD_POOL]
UserExits=TP_UEX
[TP_UEX]
OnBlock=U_onBlock
Assinatura e parâmetro
A função recebe um objeto oList com métodos para bloquear ou ocultar serviços:
| Método | Ação |
|---|---|
oList:block(endpoint, metodo) | Bloqueia endpoint + verbo |
oList:hide(endpoint, metodo) | Oculta da listagem (sem bloquear execução direta) |
oList:getApiList() | Lista de APIs disponíveis na subida |
oList:getServiceName() | Nome do serviço HTTP |
oList:getThreadPoolName() | Nome do thread pool |
O retorno é ignorado — devolva Nil.
Exemplo
Function U_onBlock( oList )
Local cEndpoint := ''
Local cServiceName := oList:getServiceName()
Local nServicePort := oList:getServicePort()
Local cThreadPoolName := oList:getThreadPoolName()
Local cUserData := oList:getUserData()
Local jApis := oList:getApiList()
// Bloqueia ou oculta endpoint + método (use conforme necessidade)
cEndpoint := '/exemplo1/urn'
oList:block( cEndpoint, 'get' )
oList:block( cEndpoint, 'post' )
oList:hide( cEndpoint, 'put' )
cEndpoint := '/exemplo2/urn'
oList:block( cEndpoint, 'get' )
Return Nil
Para cada ação informe endpoint e método separadamente. É possível bloquear todos os verbos de um path ou apenas alguns.
Modo Soft
Se uma exceção ocorrer durante o OnBlock, o AppServer não reinicia por padrão (comportamento seguro). Para permitir o start mesmo com falha na lista, configure em TlppData:
[THREAD_POOL]
TlppData={"OnBlockSoft":true}
Para lista branca (só o que você permitir fica disponível), use OnAllow em vez de OnBlock.
Próximo passo: OnAllow