Pular para o conteúdo

Trate erros em fluxos de trabalho do NextPDF Connect

Crie fluxos de trabalho resilientes no Connect. Valide cada resultado de ferramenta, encerre a sessão com falha e tente novamente a partir de um estado limpo. Quando uma ferramenta falha, ela retorna um resultado de erro estruturado. Trate esse resultado como resposta normal, não como falha de transporte. A PHP Standards Recommendation (PSR)-18 faz a mesma distinção: uma resposta é retornada mesmo quando o status indica erro (PSR-18 §3).

Terminal window
composer require nextpdf/server

Vincule um transporte. Esta receita usa create_pdf, add_text e output_pdf. Todas as três ferramentas são Core.

Quando uma chamada de ferramenta falha, ela retorna um resultado de erro. O resultado traz um sinalizador de erro, uma mensagem legível para humanos e um código quando aplicável. Um resultado bem-sucedido não contém sinalizador de erro e traz a saída normal da ferramenta. Em ambos os casos, o transporte enviou a requisição e recebeu a resposta (PSR-18 §p2).

Mantenha o laço defensivo enxuto. Envie a chamada e, em seguida, leia o resultado. Se o resultado for um erro, registre-o, classifique-o, aplique a estratégia de recuperação e pare de usar o estado desatualizado. Caso contrário, extraia os campos necessários e continue.

FerramentaFunçãoNível de risco
create_pdfAbre a sessãoSeguro
add_textEscreve textoCuidado
output_pdfRenderiza e retorna o PDFAprovação Obrigatória / Revisão (base64)

O catálogo de ferramentas é a fonte da verdade. As ferramentas disponíveis variam conforme o tier instalado.

Execute o caminho feliz (create_pdfadd_textoutput_pdf) e verifique cada resultado. Em seguida, reutilize intencionalmente um document_id destruído em add_text para disparar um erro de sessão. Recupere-se criando uma nova sessão e reaplicando o conteúdo.

Classifique os erros por categoria e responda de acordo:

  • Validação de entrada — determinística. Corrija os argumentos e, em seguida, tente novamente a mesma chamada. Exemplos: texto vazio, alinhamento inválido, tamanho não positivo, tamanho de página desconhecido, família de fonte desconhecida.
  • Sessão — o document_id não existe mais. Crie uma nova sessão e, em seguida, reaplique todo o conteúdo.
  • Sistema — uma restrição de recursos no servidor, como o limite de sessões. Aplique backoff e, em seguida, tente novamente.
  • Aprovaçãooutput_pdf para um arquivo pode pausar para aprovação humana. Isso é uma pausa no fluxo de trabalho, não uma falha. Encaminhe o desafio e aguarde; em seguida, chame novamente com o token de confirmação.

Nunca presuma que deu certo. Nunca reutilize um document_id após um erro de sessão. Nunca envie output_pdf antes que cada etapa de conteúdo tenha sido concluída com sucesso.

  • Aprovação não é um erro. O desafio human-in-the-loop (HITL) é uma pausa. Não tente novamente em um loop apertado. Encaminhe-o ao humano responsável.
  • Reinicialização do servidor. Todas as sessões em memória são limpas, e cada document_id anterior se torna inválido.
  • Fluxo de trabalho parcial. Se add_text falhar no meio do documento, a sessão pode ficar inconsistente. A recuperação segura é uma nova sessão, não um reparo parcial.

Impacto desprezível. Esta receita trata do fluxo de controle, não da renderização. O perfil é structural para qualquer saída produzida.

As mensagens de erro são destinadas ao agente chamador e ao operador. Não repasse literalmente o texto bruto do erro do servidor para usuários finais não confiáveis. Em vez disso, exiba uma mensagem classificada e sanitizada.

DeclaraçãoEspecificaçãoCláusulareference_id
O transporte retorna uma resposta independentemente do resultado.PSR-18§p2
Uma resposta é retornada mesmo quando o status é de erro.PSR-18§3

Não aplicável — todas as ferramentas são Core.

TransporteDisponívelObservações
MCP (stdio)SimOs erros chegam como resultado de ferramenta com um sinalizador de erro.
RESTSimUm status diferente de 2xx carrega o mesmo corpo de erro classificado.
gRPCSimUm código de status acompanhado de uma mensagem de resultado de erro.

Em todos os transportes, inspecione um erro no nível da ferramenta como resposta normal, não como chamada perdida (PSR-18 §3).

create_pdf é Seguro, add_text é Cuidado e output_pdf é Aprovação Obrigatória, rebaixado para Revisão no modo base64. Uma escrita de arquivo pendente aparece como um desafio de aprovação. O tratamento de erro deve tratá-lo como uma pausa, não como uma falha (níveis de risco HITL).

Uma aprovação pendente retorna:

{ "allowed": false, "challenge": "<human-readable challenge text>", "token": "confirm_<single-use-hex>" }

Chame novamente a mesma ferramenta com _confirmation_token definido para esse token. Ela retorna { "allowed": true }. Para o fluxo completo, consulte output-approval.