ky 훅
Fetcher는 ky에 위임하므로 hook 기반 패턴이 그대로 유지됩니다. 추가로 제공되는 context.openapi metadata는 route-level instrumentation을 쉽게 만듭니다.
const api = createFetcher<paths>({
prefixUrl: '/api',
hooks: {
beforeRequest: [
(request, options) => {
request.headers.set('x-client', 'web');
console.debug('request', {
method: options.context.openapi?.method,
template: options.context.openapi?.pathTemplate,
});
},
],
afterResponse: [
(_request, options, response) => {
reportMetric('http.response', {
path: options.context.openapi?.pathTemplate,
status: response.status,
});
},
],
},
});인증 클라이언트
Base client를 한 번 만들고 authenticated branch에는 extend를 사용하세요.
const api = createFetcher<paths>({ prefixUrl: '/api' });
export function withToken(token: string) {
return api.extend({
headers: {
Authorization: `Bearer ${token}`,
},
});
}extend는 typed fetcher를 반환하므로 composition 이후에도 route inference가 유지됩니다.