{{ message }}
Repository navigation
fix(docs): restaura prefixo /api nas URLs da documentação OpenAPI - #908
Closed
felipeflfranca wants to merge 1 commit into
Closed
felipeflfranca wants to merge 1 commit into
felipeflfranca wants to merge 1 commit into
Conversation
O getJsonDoc funde todos os JSONs de pages/docs/doc/ com lodash.merge em ordem alfabética. O eleicoes.json declarava as chaves globais da spec (openapi, info, servers) e, por vir depois de basic_info.json no alfabeto, sobrescrevia servers[0].url com "https://brasilapi.com.br" — sem o /api. O efeito não ficava restrito às rotas de eleições: toda a documentação passou a exibir URLs sem o prefixo, que retornam 404 quando copiadas (ex.: https://brasilapi.com.br/hospitais/v1). O info e a versão da spec também eram sequestrados, trocando o título da página por "API de Eleições - BrasilAPI". - remove openapi/info/servers do eleicoes.json e openapi do cid10.json e status.json, que causavam o mesmo clobbering na versão da spec - getJsonDoc passa a ignorar essas chaves globais em qualquer arquivo que não seja o basic_info.json, dono da identidade da spec - testes de regressão cobrindo servers, identidade global e o formato dos paths documentados Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
Contributor
Author
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.




Problema
Na documentação, ao expandir qualquer rota, a URL exibida vem sem o prefixo
/api:Quem copia a URL da documentação recebe 404. O problema afeta todas as rotas documentadas.
Causa
services/getJsonDoc.jsfunde todos os JSONs depages/docs/doc/comlodash.merge, em ordem alfabética dereaddirSync. Obasic_info.jsoné o dono da identidade global da spec e define corretamente:Só que o
eleicoes.jsontambém declarava chaves globais:Como
eleicoesvem depois debasic_infono alfabeto, omergesobrescreveservers[0].urle apaga o/apida spec inteira. Saída do merge antes da correção:O título e a descrição da home da documentação também estavam sendo sequestrados — não era só o
/api.Introduzido em dfa9354 (#874).
Solução
openapi/info/serversdoeleicoes.json. Seuspathsjá seguem a convenção do projeto (/eleicoes/..., relativos ao server), então nada muda para essas rotas além de voltarem a ganhar o prefixo correto.openapidecid10.jsonestatus.json, que causavam o mesmo clobbering na versão da spec.getJsonDocpassa a ignorar essas chaves globais em qualquer arquivo que não seja obasic_info.json, para que um arquivo de endpoint não volte a derrubar a spec inteira em silêncio.servers, identidade global, ausência de chaves globais nos arquivos de endpoint e o formato dos paths documentados.Nenhum endpoint, campo de resposta ou status HTTP foi alterado — a mudança é restrita à montagem da documentação.
Verificação
npx vitest run tests/docs-spec-refs.test.js— 5/5 passandonpx eslint pages/ services/ lib/ util/ middlewares/ errors/ --ext .js— limpohttps://brasilapi.com.br/api/cnpj/v1/{cnpj}, e o cabeçalho volta a "Brasil API (1.0.0)" com a descrição original/api/hospitais/v1→ 200,/hospitais/v1→ 404