Class OpenApiDocsSupport
Esta classe concentra a logica compartilhada usada pelos controladores documentais para
resolver grupos OpenAPI, buscar o documento correto e escolher o content-type mais adequado
ao extrair schemas e exemplos. Ela evita duplicacao de heuristicas entre /schemas/filtered
e /schemas/catalog.
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptioncom.fasterxml.jackson.databind.JsonNodefetchOpenApiDocument(org.springframework.web.client.RestTemplate restTemplate, String openApiBasePath, String group, org.slf4j.Logger logger) Busca o documento OpenAPI de um grupo especifico, com fallback para o documento base.inferMediaType(com.fasterxml.jackson.databind.JsonNode contentRoot) Infere o media type preferencial a partir de um bloco OpenAPIcontent.resolveGroupFromPath(String path) Resolve o grupo OpenAPI mais adequado a partir do path do recurso.com.fasterxml.jackson.databind.JsonNodeselectPreferredContentNode(com.fasterxml.jackson.databind.JsonNode contentRoot) Seleciona o content node preferencial dentro de um bloco OpenAPIcontent.
-
Constructor Details
-
OpenApiDocsSupport
public OpenApiDocsSupport()
-
-
Method Details
-
resolveGroupFromPath
Resolve o grupo OpenAPI mais adequado a partir do path do recurso.Primeiro tenta usar
OpenApiGroupResolverquando presente. Se nao houver resolvedor configurado ou ele nao retornar valor util, aplica um fallback baseado nos primeiros segmentos relevantes do path.- Parameters:
path- path do recurso HTTP- Returns:
- nome do grupo OpenAPI resolvido
-
fetchOpenApiDocument
public com.fasterxml.jackson.databind.JsonNode fetchOpenApiDocument(org.springframework.web.client.RestTemplate restTemplate, String openApiBasePath, String group, org.slf4j.Logger logger) Busca o documento OpenAPI de um grupo especifico, com fallback para o documento base.O metodo tenta primeiro
/v3/api-docs/{group}. Se o grupo nao existir, faz fallback para o documento base configurado. Esse comportamento e importante para manter resiliencia em ambientes onde nem todos os recursos estao organizados por grupos explicitamente publicados.- Parameters:
restTemplate- cliente HTTP usado para buscar o documentoopenApiBasePath- path base do endpoint OpenAPIgroup- grupo desejadologger- logger do chamador para observabilidade- Returns:
- documento OpenAPI carregado como
JsonNode
-
selectPreferredContentNode
public com.fasterxml.jackson.databind.JsonNode selectPreferredContentNode(com.fasterxml.jackson.databind.JsonNode contentRoot) Seleciona o content node preferencial dentro de um bloco OpenAPIcontent.A precedencia e
application/json, depois o media type curinga, e por fim o primeiro media type disponivel. Isso padroniza a leitura de request/response bodies em documentos heterogeneos.- Parameters:
contentRoot- no raiz do blococontent- Returns:
- no preferencial para leitura de schema e exemplos
-
inferMediaType
Infere o media type preferencial a partir de um bloco OpenAPIcontent.- Parameters:
contentRoot- no raiz do blococontent- Returns:
- media type preferencial ou
nullquando inexistente
-