Files
inneratb/frontend/composables/useUser.ts
T
2026-05-30 15:02:45 +09:00

30 lines
823 B
TypeScript

// 도메인별 API Composable 샘플 — 실제 도메인이 추가되면 이 패턴을 복제
// (ref, useApi 는 Nuxt 자동 임포트로 별도 import 불필요)
export interface User {
id: number
email: string
name: string
}
export function useUser() {
const api = useApi()
const loading = ref<boolean>(false)
const error = ref<string | null>(null)
async function getUser(id: number): Promise<User | null> {
loading.value = true
error.value = null
try {
// 인터셉터에서 success/data 언래핑 후 데이터만 반환
return (await api.get<User>(`/users/${id}`)) as unknown as User
} catch (e) {
error.value = (e as Error)?.message ?? 'unknown error'
return null
} finally {
loading.value = false
}
}
return { loading, error, getUser }
}