File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -178,9 +178,33 @@ interface RequestProps {
178178 headers?: any; // Request headers
179179 json?: boolean; // JSON mode (default: true)
180180 cacheControl?: boolean; // Cache control (default: true)
181+ successKey?: string; // Key to extract data from response
181182}
182183` ` `
183184
185+ #### Global Configuration
186+
187+ You can configure global defaults for the ` request ` function .
188+
189+ ` ` ` typescript
190+ import { request } from '@app-studio/react-request';
191+
192+ // Set global success key
193+ request.setConfig({
194+ successKey: 'data'
195+ });
196+
197+ // Usage
198+ // Will automatically extract response.data if successKey is set globally
199+ const data = await request({ url: '/api/users' });
200+
201+ // Override per request
202+ const users = await request({
203+ url: '/api/users',
204+ successKey: 'users' // Overrides global config
205+ });
206+ ` ` `
207+
184208### RequestProvider
185209
186210Context provider for global configuration .
Original file line number Diff line number Diff line change 11{
2- "version" : " 0.1.4 " ,
2+ "version" : " 0.1.5 " ,
33 "name" : " @app-studio/react-request" ,
44 "author" : " Steedmonteiro <steed@rize.network>" ,
55 "description" : " Request Hooks to fetch data in React" ,
Original file line number Diff line number Diff line change @@ -59,6 +59,7 @@ interface RequestProps {
5959 headers ?: any ;
6060 json ?: boolean ;
6161 cacheControl ?: boolean ;
62+ successKey ?: string ;
6263}
6364
6465export const request = ( {
@@ -68,6 +69,7 @@ export const request = ({
6869 headers = { } ,
6970 json = true ,
7071 cacheControl = true ,
72+ successKey,
7173} : RequestProps ) => {
7274 let body ;
7375
@@ -103,5 +105,19 @@ export const request = ({
103105 method,
104106 headers,
105107 body,
106- } ) . then ( ( response ) => checkStatus ( response , url ) ) ;
108+ } )
109+ . then ( ( response ) => checkStatus ( response , url ) )
110+ . then ( ( response ) => {
111+ const effectiveSuccessKey = successKey || request . config . successKey ;
112+ const finalData =
113+ effectiveSuccessKey && response && typeof response === 'object'
114+ ? response [ effectiveSuccessKey ]
115+ : response ;
116+ return finalData ;
117+ } ) ;
118+ } ;
119+
120+ request . config = { successKey : undefined as string | undefined } ;
121+ request . setConfig = ( config : { successKey ?: string } ) => {
122+ Object . assign ( request . config , config ) ;
107123} ;
You can’t perform that action at this time.
0 commit comments