Pular para o conteúdo principal
Formato do erro O SILOC retorna erros como problem details RFC 9457:
Definições de campos
  • type – Uma URI que identifica o erro no catálogo de erros da Lerian, construída como https://errors.lerian.studio/v1/<code>. Esta URI repete code, então ela não separa dois status que compartilham um código.
  • title – O texto do status HTTP (por exemplo, Not Found).
  • status – O código de status HTTP.
  • detail – Uma explicação legível por humanos desta ocorrência. Um 500 e um SILOC-0023 substituem o texto por internal error, para que a causa interna permaneça dentro do trilho. O texto varia por ocorrência, e um 403 pode trazer a mensagem que o serviço de autorização reportou. Não baseie sua lógica nele.
  • code – O código estável e legível por máquina (SILOC-NNNN). Baseie sua lógica no par de status e code, não em code isoladamente. Um código pode aparecer sob mais de um status, e cada status precisa de uma ação diferente. Por exemplo, SILOC-0022 é um 400 para um corpo que não é JSON válido e um 422 para um valor que viola uma regra de domínio. Uma requisição que falha na validação de schema traz SILOC-0022, e errors nomeia os campos com falha.
  • errors – Uma lista opcional de detalhes em nível de campo, cada um com o location que leu, um message e o value encontrado ali. Uma recusa do gate de autorização ou de idempotência traz, em vez disso, uma lista violations vazia.
As tabelas abaixo listam os códigos que o SILOC retorna, agrupados por status HTTP.

400, 413, 415: Corpo da requisição recusado


401: Chamador não identificado


403: Chamador recusado


404: Não encontrado


409: Conflitos


422: Erros de validação


500: Erros do servidor


503: Trilho não pode responder


Um 503 que traz SILOC-0002 não indica que o comando foi rejeitado. O trilho responde com ele tanto antes de o comando executar quanto depois de ele confirmar, então o comando já pode ter tido efeito. Concilie a requisição original primeiro. Quando você repetir, envie o mesmo X-Idempotency, e nunca repita sob um novo.