diff --git a/packages/api-client/core/client.ts b/packages/api-client/core/client.ts index f57dd844..53a7a885 100644 --- a/packages/api-client/core/client.ts +++ b/packages/api-client/core/client.ts @@ -33,8 +33,8 @@ class HTTPClient< .replace(/\/*$/, '') .replace('localhost', '127.0.0.1') this._proxy = this.buildRoute(this)() - options.transformResponse = - options.transformResponse || ((data) => camelcaseKeys(data)) + options.transformResponse ||= (data) => camelcaseKeys(data) + options.getDataFromResponse ||= (res: any) => res.data this.initGetClient() @@ -45,7 +45,7 @@ class HTTPClient< for (const name of allControllerNames) { Object.defineProperty(this, name, { get() { - const client = Reflect.get(this, `${methodPrefix}${name}`) + const client: any = Reflect.get(this, `${methodPrefix}${name}`) if (!client) { throw new ReferenceError( `${ @@ -176,7 +176,7 @@ class HTTPClient< : new RequestError(message, code, url, e) } - const data = res.data + const data = that.options.getDataFromResponse!(res) if (!data) { return null } diff --git a/packages/api-client/interfaces/client.ts b/packages/api-client/interfaces/client.ts index 4974fad0..b0cb05c3 100644 --- a/packages/api-client/interfaces/client.ts +++ b/packages/api-client/interfaces/client.ts @@ -11,5 +11,10 @@ interface IClientOptions { } customThrowResponseError: (err: any) => T transformResponse: (data: any) => T + /** + * + * @default (res) => res.data + */ + getDataFromResponse: (response: unknown) => T } export type ClientOptions = Partial