Mise en place du plugin oFetch pour personnaliser la gestion des requêtes.
Nettoyage nuxt.config.
Showing
3 changed files
with
60 additions
and
7 deletions
| 1 | 0.5.0: | 1 | 0.5.0: |
| 2 | -- M | 2 | +- Mise en place du plugin oFetch pour personnaliser la gestion des requêtes. |
| 3 | 3 | ||
| 4 | 0.4.0: | 4 | 0.4.0: |
| 5 | - Modification de la config eslint avec la suppression de tout ce qui concerne prettier, suppression du module @nuxt/eslint, contenant le module eslint/recommanded, et remplacement par le module @antfu/eslint-config, plus complet et simple. | 5 | - Modification de la config eslint avec la suppression de tout ce qui concerne prettier, suppression du module @nuxt/eslint, contenant le module eslint/recommanded, et remplacement par le module @antfu/eslint-config, plus complet et simple. |
| @@ -23,12 +23,6 @@ export default defineNuxtConfig({ | @@ -23,12 +23,6 @@ export default defineNuxtConfig({ | ||
| 23 | 23 | ||
| 24 | // css: ['~/assets/css/main.scss'], | 24 | // css: ['~/assets/css/main.scss'], |
| 25 | 25 | ||
| 26 | - eslint: { | ||
| 27 | - config: { | ||
| 28 | - stylistic: true, | ||
| 29 | - }, | ||
| 30 | - }, | ||
| 31 | - | ||
| 32 | modules: [ | 26 | modules: [ |
| 33 | "@nuxt/icon", | 27 | "@nuxt/icon", |
| 34 | "@nuxt/image", | 28 | "@nuxt/image", |
plugins/oFetch.ts
0 → 100644
| 1 | +import type { $Fetch } from "nitropack"; | ||
| 2 | +import type { RuntimeConfig } from "nuxt/schema"; | ||
| 3 | +import { ofetch } from "ofetch"; | ||
| 4 | + | ||
| 5 | +/** | ||
| 6 | + * Ce plugin est essentiel ! | ||
| 7 | + * Il sert à paramétrer 'ofetch' qui est d'office utilisé par Nuxt à l'initialisation de notre app. | ||
| 8 | + * (Sert par exemple pour toutes les méthodes liées au provider d'authentification). | ||
| 9 | + */ | ||
| 10 | +export default defineNuxtPlugin(async (_nuxtApp) => { | ||
| 11 | + // Récupération des variables d'environnement (hydratées dans le nuxt.config.ts). | ||
| 12 | + const runtimeConfig: RuntimeConfig = useRuntimeConfig(); | ||
| 13 | + // On rend la configuration que l'on crée globale grâce à 'globalThis.$fetch'. | ||
| 14 | + globalThis.$fetch = ofetch.create({ | ||
| 15 | + // Base url example : https://nom-de-domaine/api. | ||
| 16 | + baseURL: runtimeConfig.public.apiTMDBUrl, | ||
| 17 | + /** | ||
| 18 | + * Request interceptor. | ||
| 19 | + */ | ||
| 20 | + onRequest({ request, options }) { | ||
| 21 | + if (request) { /** empty */ } | ||
| 22 | + // Set the request headers | ||
| 23 | + // note that this relies on ofetch >= 1.4.0 - you may need to refresh your lockfile | ||
| 24 | + options.headers.set("Authorization", "..."); | ||
| 25 | + }, | ||
| 26 | + /** | ||
| 27 | + * Request error interceptor. | ||
| 28 | + */ | ||
| 29 | + onRequestError({ request, options, error }) { | ||
| 30 | + // Handle the request errors | ||
| 31 | + // Do something before request error sent. | ||
| 32 | + if (request) { /** empty */ } | ||
| 33 | + if (options) { /** empty */ } | ||
| 34 | + if (error) { /** empty */ } | ||
| 35 | + }, | ||
| 36 | + /** | ||
| 37 | + * Response interceptor. | ||
| 38 | + */ | ||
| 39 | + onResponse({ request, response, options }) { | ||
| 40 | + // Process the response data | ||
| 41 | + if (request) { /** empty */ } | ||
| 42 | + if (response) { /** empty */ } | ||
| 43 | + // If response return 401 code. | ||
| 44 | + // if ( | ||
| 45 | + // (response && response.code && response.code === 401) | ||
| 46 | + // || (response && response.status && response.status === 401) | ||
| 47 | + // ) { | ||
| 48 | + // // Do something if 401. | ||
| 49 | + // } | ||
| 50 | + if (options) { /** empty */ } | ||
| 51 | + }, | ||
| 52 | + onResponseError({ request, response, options }) { | ||
| 53 | + // Handle the response errors | ||
| 54 | + if (request) { /** empty */ } | ||
| 55 | + if (response) { /** empty */ } | ||
| 56 | + if (options) { /** empty */ } | ||
| 57 | + }, | ||
| 58 | + }) as unknown as $Fetch; | ||
| 59 | +}); |
-
Please register or login to post a comment