Appearance
Services - Camada de Serviços (API)
Configuração do Axios
typescript
// src/config/api.ts
const instance = axios.create({
baseURL: import.meta.env.VITE_API_URL,
})
export { instance }Padrão de Service
typescript
// src/modules/contracts/services/contracts.ts
export const getContractsService = (params?: Partial<FilterContract>) =>
instance.get<Contract[]>('contracts', { params })
export const createContractService = (data: CreateContract) => instance.post<Contract>('contracts', data)Padrão de Service com Filtros
typescript
import { instance } from '@/config/api'
import type { Item, ItemFilter } from '@/domain/item'
type ItemsResponse = {
data: Item[]
total: number
}
export const getItemsService = (params?: Partial<ItemFilter>) => instance.get<ItemsResponse>('items', { params })Nomenclatura
| Tipo | Convenção | Exemplo |
|---|---|---|
| GET (lista) | get[Entidade]sService | getContractsService |
| GET (único) | get[Entidade]ByIdService | getContractByIdService |
| POST | create[Entidade]Service | createContractService |
| PUT | update[Entidade]Service | updateContractService |
| DELETE | delete[Entidade]Service | deleteContractService |
Organização
- Cada módulo tem seus services em
src/modules/[modulo]/services/ - Services devem ser funções puras que retornam Promises
- Não incluir lógica de negócio nos services