Sous-solA API dans NuxtPièce 7/7Mémo

API

Le mémo des API web avec Nuxt : HTTP, méthodes et codes, appels externes, clés secrètes, CRUD, validation et sécurité.

Ce mémo résume l'essentiel des API avec Nuxt. Chaque section renvoie au chapitre qui l'explique en détail.

Requête et réponse

ÉlémentExemple
Ligne de départ (requête)GET /api/recettes/2 HTTP/1.1
Ligne de départ (réponse)HTTP/1.1 200 OK
En-têteContent-Type: application/json
Corps{ "id": 2, "titre": "Ratatouille" }

Détails : Comprendre les API.

Méthodes

MéthodeIntentionIdempotente
GETLireOui
POSTCréerNon
PUTRemplacerOui
PATCHModifier en partieNon
DELETESupprimerOui

Codes de statut

CodeSens
200Réussite
201Ressource créée
204Réussite, sans contenu
400Requête invalide
401Non authentifié
403Pas le droit
404Introuvable
429Trop de requêtes
500Erreur du serveur

Détails : Méthodes et codes de statut.

Appeler une API externe

const { data } = await useFetch('https://www.themealdb.com/api/json/v1/1/search.php', {
  query: { s: 'Arrabiata' },
  transform: reponse => reponse.meals ?? []
})
BesoinOutil
Charger dans une pageuseFetch
Clic ou formulaire$fetch avec try/catch
Ne garder que l'utileoption transform
Paramètres d'adresseoption query

Détails : Consommer une API externe.

Cacher une clé

server/api/photos.get.ts
export default defineEventHandler(async (event) => {
  const config = useRuntimeConfig(event)
  return await $fetch('https://api.exemple-photos.test/plats', {
    headers: { Authorization: `Bearer ${config.cleExemple}` }
  })
})
OùRègle
runtimeConfig hors publicVisible côté serveur seulement
.envNUXT_CLE_EXEMPLE=..., jamais commité
La pageAppelle /api/photos, jamais le service

Détails : Cacher une clé d'API.

Écrire une API

FichierRequête
server/api/recettes/index.get.tsGET /api/recettes
server/api/recettes/index.post.tsPOST /api/recettes
server/api/recettes/[id].patch.tsPATCH /api/recettes/2
server/api/recettes/[id].delete.tsDELETE /api/recettes/2
throw createError({ status: 404, statusText: 'Recette introuvable' })
setResponseStatus(event, 201)
FonctionRôle
getRouterParam(event, 'id')Paramètre d'adresse
getQuery(event)Paramètres de requête
readBody(event)Corps envoyé

Détails : Écrire une API complète.

Sécurité

nuxt.config.ts
export default defineNuxtConfig({
  routeRules: {
    '/api/**': { cors: true },
    '/api/recettes': { swr: 60 }
  }
})
SujetRéflexe
EntréesToujours valider côté serveur
AccèsMiddleware : 401 sans identité, 403 sans droit
CORSOuvrir seulement à l'origine voulue
CacheJamais de données personnelles
AbusPagination, limitation de débit (429)

Détails : Sécurité et limites.

Sources officielles

Ensuite

Projet
Lignes de code
Niveau
Sous-sol
Appartement
API dans Nuxt
Pièce
7/7
Plan n°
api/index
Lignes de code · fiches rédigées à partir des documentations officielles, sources citées en bas de chaque page.