Pular para o conteúdo principal

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 (POST liberado, DELETE bloqueado)

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étodoAçã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