Cerne
Endpoints da API public/api/ — REST simples, sem framework

Todas as rotas vivem em public/api/ como scripts PHP planos (sem roteador). Cada endpoint valida entrada com filter_input() e devolve JSON no padrão {sucesso, mensagem, dados}.

Rotas

RotaMétodoDescrição
/api/search.phpGETBusca full-text (Elasticsearch, fallback MySQL)
/api/researchers.phpGET/POSTCRUD de pesquisadores
/api/upload_and_index.phpPOSTUpload de XML + indexação (só .xml)
/api/export.phpGETExportação multi-formato (BibTeX, RIS, CSV, JSON, XML)
/api/umc_dashboard.phpGETDados agregados do dashboard institucional
/api/umc_filters.phpGETOpções de filtro por PPG
/api/filter_values.phpGETValores disponíveis por filtro
/api/validation.phpGET/POSTValidação técnica/funcional do sistema
/api/health.phpGETHealth check de todos os serviços

Ciclo de vida de uma busca

flowchart TD
    U["Cliente (fetch via API.js)"] --> EP["search.php"]
    EP --> VAL["filter_input() valida a query"]
    VAL --> ES{"Elasticsearch disponível?"}
    ES -- sim --> ESQ["ElasticsearchService::search()"]
    ES -- não --> SQL["Fallback: DatabaseService (MySQL)"]
    ESQ --> RESP["JSON: sucesso, mensagem, dados"]
    SQL --> RESP
    RESP --> U
                    
Regra: todo endpoint novo segue o mesmo contrato — {"sucesso": bool, "mensagem": string, "dados": mixed} — e trata a ausência do Elasticsearch como caso esperado, nunca como erro fatal.
Essa página foi útil?
Obrigado pelo feedback! 💬 Comentar / relatar problema