Frontend Web - Integração com API¶
Cliente HTTP base¶
Arquivo central:
src/services/api.ts
Responsabilidade:
- configurar baseURL
- headers padrão
- interceptores de autenticação/erro
Camada de serviços por submódulo¶
A integração de domínio deve acontecer em:
src/modules/<dominio>/<submodulo>/services/*.service.ts
Exemplos:
src/modules/payments/checkout/services/checkout.service.tssrc/modules/cycles/list/services/list.service.tssrc/modules/profile/profile/services/profile.service.ts
Fluxo recomendado¶
page.tsxdelega para hook.- hook chama service.
- service usa
api. view.tsxnão chama API direta.
Regras obrigatórias¶
- Service não importa
hooksnemview. - Service não conhece componente React.
view.tsxnão importa services do submódulo.- Transformações de payload devem ficar em
mappers.tsquando fizer sentido.
Erros e autenticação¶
- Erros HTTP são tratados por interceptores globais e pela camada de hook.
- Regras de autorização por rota ficam no
ProtectedRoute, não no componente visual.
Observação de evolução¶
src/services/api.ts continua como client base compartilhado. A especialização de domínio está nos serviços locais por submódulo para evitar acoplamento monolítico em um único arquivo de API.
Atualização importante (marketplace de cursos)¶
O catálogo de cursos passou a usar endpoint agregado:
GET /marketplace/catalog
Com isso, o frontend deve priorizar:
src/modules/marketplace/hooks/useMarketplaceCatalog.tssrc/modules/marketplace/services/marketplace.service.ts
Detalhes completos em:
Atualização importante (onboarding cliente + PBI)¶
Integrações obrigatórias no fluxo de cliente:
PUT /client/profile/method-onboardingpara concluir onboarding obrigatório.PUT /client/profile/pbipara auto-definição/edição de PBI quando elegível.GET /client/profilepara ler:method_onboarding_versionknows_billings_methodknows_own_pbiwants_professional_guidancepbi_defined_by
Recomendação:
- usar
['client-health-gate', userId]para cache de bloqueio/liberação de rota; - invalidar
['client-profile']e['client-statistics']após salvar PBI.