Skip to content

Commit b30a0c9

Browse files
feat: added instance call with config (#254)
* [Added] enhance instance usage section with config object example and retry logic * [Added] add examples for calling Axios instance with a config object and implementing retry logic in multiple languages --------- Co-authored-by: Jay <[email protected]>
1 parent 0ab7959 commit b30a0c9

File tree

15 files changed

+417
-12
lines changed

15 files changed

+417
-12
lines changed

posts/ar/instance.md

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,31 @@ The available instance methods are listed below. The specified config will be me
3232
##### axios#post(url[, data[, config]])
3333
##### axios#put(url[, data[, config]])
3434
##### axios#patch(url[, data[, config]])
35-
##### axios#getUri([config])
35+
##### axios#getUri([config])
36+
37+
### Calling the instance with a config object
38+
39+
In addition to using convenience methods like `instance.get()` or `instance.post()`, you can also call an Axios instance directly with a config object. This is functionally equivalent to `axios(config)`, and is particularly useful when retrying a request using the original configuration.
40+
41+
```js
42+
const instance = axios.create({ baseURL: '/api' });
43+
44+
// Works just like axios(config)
45+
instance({
46+
url: '/users',
47+
method: 'get'
48+
});
49+
```
50+
51+
This approach enables clean retry logic when handling authentication errors:
52+
53+
```js
54+
instance.interceptors.response.use(undefined, async (error) => {
55+
if (error.response?.status === 401) {
56+
await refreshToken();
57+
return instance(error.config); // Retry original request
58+
}
59+
60+
throw error;
61+
});
62+
```

posts/de/instance.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,3 +33,30 @@ Die verfügbaren Instanzmethoden sind im folgenden aufgelistet. Die beim Aufruf
3333
##### axios#put(url[, data[, config]])
3434
##### axios#patch(url[, data[, config]])
3535
##### axios#getUri([config])
36+
37+
### Instanz direkt mit einem Konfigurationsobjekt aufrufen
38+
39+
Neben den Komfortmethoden wie `instance.get()` oder `instance.post()` können Sie eine Axios-Instanz auch direkt mit einem Konfigurationsobjekt aufrufen. Dies funktioniert genauso wie `axios(config)` und ist besonders nützlich, wenn Sie eine Anfrage mit der ursprünglichen Konfiguration erneut senden möchten.
40+
41+
```js
42+
const instance = axios.create({ baseURL: '/api' });
43+
44+
// Funktioniert wie axios(config)
45+
instance({
46+
url: '/users',
47+
method: 'get'
48+
});
49+
```
50+
51+
Dieses Vorgehen ermöglicht eine saubere Retry-Logik, z.B. beim Umgang mit Authentifizierungsfehlern:
52+
53+
```js
54+
instance.interceptors.response.use(undefined, async (error) => {
55+
if (error.response?.status === 401) {
56+
await refreshToken();
57+
return instance(error.config); // Ursprüngliche Anfrage erneut senden
58+
}
59+
60+
throw error;
61+
});
62+
```

posts/en/instance.md

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,31 @@ The available instance methods are listed below. The specified config will be me
3232
##### axios#post(url[, data[, config]])
3333
##### axios#put(url[, data[, config]])
3434
##### axios#patch(url[, data[, config]])
35-
##### axios#getUri([config])
35+
##### axios#getUri([config])
36+
37+
### Calling the instance with a config object
38+
39+
In addition to using convenience methods like `instance.get()` or `instance.post()`, you can also call an Axios instance directly with a config object. This is functionally equivalent to `axios(config)`, and is particularly useful when retrying a request using the original configuration.
40+
41+
```js
42+
const instance = axios.create({ baseURL: '/api' });
43+
44+
// Works just like axios(config)
45+
instance({
46+
url: '/users',
47+
method: 'get'
48+
});
49+
```
50+
51+
This approach enables clean retry logic when handling authentication errors:
52+
53+
```js
54+
instance.interceptors.response.use(undefined, async (error) => {
55+
if (error.response?.status === 401) {
56+
await refreshToken();
57+
return instance(error.config); // Retry original request
58+
}
59+
60+
throw error;
61+
});
62+
```

posts/es/instance.md

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,31 @@ Los métodos disponibles de la instancia están listados a continuación. La con
3232
##### axios#post(url[, data[, config]])
3333
##### axios#put(url[, data[, config]])
3434
##### axios#patch(url[, data[, config]])
35-
##### axios#getUri([config])
35+
##### axios#getUri([config])
36+
37+
### Llamar a la instancia directamente con un objeto de configuración
38+
39+
Además de los métodos como `instance.get()` o `instance.post()`, también puedes llamar a una instancia de Axios directamente pasando un objeto de configuración. Esto funciona igual que `axios(config)` y es útil, por ejemplo, para reenviar una solicitud con la configuración original.
40+
41+
```js
42+
const instance = axios.create({ baseURL: '/api' });
43+
44+
// Funciona igual que axios(config)
45+
instance({
46+
url: '/users',
47+
method: 'get'
48+
});
49+
```
50+
51+
Este enfoque permite implementar una lógica de reintento limpia, por ejemplo, al manejar errores de autenticación:
52+
53+
```js
54+
instance.interceptors.response.use(undefined, async (error) => {
55+
if (error.response?.status === 401) {
56+
await refreshToken();
57+
return instance(error.config); // Reenviar la solicitud original
58+
}
59+
60+
throw error;
61+
});
62+
```

posts/fa/instance.md

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,31 @@ const instance = axios.create({
3232
##### axios#post(url[, data[, config]])
3333
##### axios#put(url[, data[, config]])
3434
##### axios#patch(url[, data[, config]])
35-
##### axios#getUri([config])
35+
##### axios#getUri([config])
36+
37+
### فراخوانی مستقیم نمونه با شیء پیکربندی
38+
39+
علاوه بر متدهای کمکی مانند `instance.get()` یا `instance.post()`، می‌توانید یک نمونه Axios را مستقیماً با یک شیء پیکربندی فراخوانی کنید. این کار دقیقاً مانند `axios(config)` عمل می‌کند و زمانی مفید است که بخواهید یک درخواست را با پیکربندی اولیه دوباره ارسال کنید.
40+
41+
```js
42+
const instance = axios.create({ baseURL: '/api' });
43+
44+
// مشابه axios(config) عمل می‌کند
45+
instance({
46+
url: '/users',
47+
method: 'get'
48+
});
49+
```
50+
51+
این روش امکان پیاده‌سازی منطق retry تمیز را فراهم می‌کند؛ مثلاً هنگام مدیریت خطاهای احراز هویت:
52+
53+
```js
54+
instance.interceptors.response.use(undefined, async (error) => {
55+
if (error.response?.status === 401) {
56+
await refreshToken();
57+
return instance(error.config); // ارسال مجدد درخواست اصلی
58+
}
59+
60+
throw error;
61+
});
62+
```

posts/fr/instance.md

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,31 @@ Les méthodes utilisables sur l’instance sont listées ci-dessous. La configur
3232
##### axios#post(url[, data[, config]])
3333
##### axios#put(url[, data[, config]])
3434
##### axios#patch(url[, data[, config]])
35-
##### axios#getUri([config])
35+
##### axios#getUri([config])
36+
37+
### Appeler directement l’instance avec un objet de configuration
38+
39+
En plus des méthodes pratiques comme `instance.get()` ou `instance.post()`, vous pouvez aussi appeler une instance Axios directement avec un objet de configuration. Cela fonctionne comme `axios(config)` et est particulièrement utile pour renvoyer une requête avec la configuration d’origine.
40+
41+
```js
42+
const instance = axios.create({ baseURL: '/api' });
43+
44+
// Fonctionne comme axios(config)
45+
instance({
46+
url: '/users',
47+
method: 'get'
48+
});
49+
```
50+
51+
Cette approche permet une logique de retry propre, par exemple lors de la gestion des erreurs d’authentification :
52+
53+
```js
54+
instance.interceptors.response.use(undefined, async (error) => {
55+
if (error.response?.status === 401) {
56+
await refreshToken();
57+
return instance(error.config); // Renvoyer la requête d’origine
58+
}
59+
60+
throw error;
61+
});
62+
```

posts/ja/instance.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,3 +33,30 @@ const instance = axios.create({
3333
##### axios#put(url[, data[, config]])
3434
##### axios#patch(url[, data[, config]])
3535
##### axios#getUri([config])
36+
37+
### インスタンスを設定オブジェクトで直接呼び出す
38+
39+
`instance.get()``instance.post()` などの便利メソッドに加えて、Axios インスタンスは設定オブジェクトを直接渡して呼び出すこともできます。これは `axios(config)` と同様に動作し、元の設定でリクエストを再送したい場合などに便利です。
40+
41+
```js
42+
const instance = axios.create({ baseURL: '/api' });
43+
44+
// axios(config) と同じように使えます
45+
instance({
46+
url: '/users',
47+
method: 'get'
48+
});
49+
```
50+
51+
この方法は、認証エラー時のリトライ処理などにも役立ちます。
52+
53+
```js
54+
instance.interceptors.response.use(undefined, async (error) => {
55+
if (error.response?.status === 401) {
56+
await refreshToken();
57+
return instance(error.config); // 元のリクエストを再送
58+
}
59+
60+
throw error;
61+
});
62+
```

posts/kr/instance.md

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,31 @@ const instance = axios.create({
3232
##### axios#post(url[, data[, config]])
3333
##### axios#put(url[, data[, config]])
3434
##### axios#patch(url[, data[, config]])
35-
##### axios#getUri([config])
35+
##### axios#getUri([config])
36+
37+
### 인스턴스를 직접 config 객체로 호출하기
38+
39+
`instance.get()`이나 `instance.post()` 같은 편의 메서드 외에도, Axios 인스턴스를 config 객체로 직접 호출할 수 있습니다. 이는 `axios(config)`와 동일하게 동작하며, 기존 설정으로 요청을 다시 보내야 할 때 유용합니다.
40+
41+
```js
42+
const instance = axios.create({ baseURL: '/api' });
43+
44+
// axios(config)와 동일하게 동작
45+
instance({
46+
url: '/users',
47+
method: 'get'
48+
});
49+
```
50+
51+
이 방식은 인증 오류 등에서 재시도 로직을 깔끔하게 구현할 수 있습니다:
52+
53+
```js
54+
instance.interceptors.response.use(undefined, async (error) => {
55+
if (error.response?.status === 401) {
56+
await refreshToken();
57+
return instance(error.config); // 원래 요청을 다시 보냄
58+
}
59+
60+
throw error;
61+
});
62+
```

posts/ku/instance.md

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,31 @@ const instance = axios.create({
3232
##### axios#post(url[, data[, config]])
3333
##### axios#put(url[, data[, config]])
3434
##### axios#patch(url[, data[, config]])
35-
##### axios#getUri([config])
35+
##### axios#getUri([config])
36+
37+
### بەکاربردنی نموونە بە ڕاستەوخۆییەوە بە ڕێکخستنی کۆنفێگ
38+
39+
لەگەڵ میثۆدەکانی ئاسانەوە وەک `instance.get()` یان `instance.post()`، دەتوانیت نموونەی ئەکسیۆس بە ڕاستەوخۆییەوە بە بەکارهێنانی ئوبجێکتی ڕێکخستن بانگ بکەیت. ئەمە وەک `axios(config)` کاردەکات و بە تایبەتی کاتێک بەدوای هەمان ڕێکخستن داواکارییەک دەخەیتەوە بەسوودە.
40+
41+
```js
42+
const instance = axios.create({ baseURL: '/api' });
43+
44+
// وەک axios(config) کاردەکات
45+
instance({
46+
url: '/users',
47+
method: 'get'
48+
});
49+
```
50+
51+
ئەم ڕێگایە ڕێکخستنێکی پاک بۆ دووبارەکردنەوەی داواکاری دابین دەکات، بۆ نموونە لە کاتی چارەسەرکردنی هەڵەی ڕوونکردنەوە:
52+
53+
```js
54+
instance.interceptors.response.use(undefined, async (error) => {
55+
if (error.response?.status === 401) {
56+
await refreshToken();
57+
return instance(error.config); // داواکارییەکە دووبارە بنێرە
58+
}
59+
60+
throw error;
61+
});
62+
```

posts/ptBR/instance.md

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,31 @@ Os métodos de instâncias disponiveis estão listadas abaixo. A configuração
3232
##### axios#post(url[, data[, config]])
3333
##### axios#put(url[, data[, config]])
3434
##### axios#patch(url[, data[, config]])
35-
##### axios#getUri([config])
35+
##### axios#getUri([config])
36+
37+
### Chamando a instância diretamente com um objeto de configuração
38+
39+
Além dos métodos convenientes como `instance.get()` ou `instance.post()`, você também pode chamar uma instância do Axios diretamente passando um objeto de configuração. Isso funciona da mesma forma que `axios(config)` e é útil, por exemplo, para reenviar uma requisição com a configuração original.
40+
41+
```js
42+
const instance = axios.create({ baseURL: '/api' });
43+
44+
// Funciona como axios(config)
45+
instance({
46+
url: '/users',
47+
method: 'get'
48+
});
49+
```
50+
51+
Esse padrão permite implementar uma lógica de repetição (retry) de forma limpa, como ao lidar com erros de autenticação:
52+
53+
```js
54+
instance.interceptors.response.use(undefined, async (error) => {
55+
if (error.response?.status === 401) {
56+
await refreshToken();
57+
return instance(error.config); // Reenvia a requisição original
58+
}
59+
60+
throw error;
61+
});
62+
```

0 commit comments

Comments
 (0)