> ## Knowledge Base Index
> Fetch the complete knowledge base index at: https://help.hodi.host/sitemap.xml
> Use this file to discover available pages before exploring further.
> Pure-Markdown content can be obtained by appending a '.md' suffix to the content URLs listed in the sitemap (without the trailing slash).

# Comment créer des fonctions serverless ?

Ajoutez un dossier `api/` à n'importe quel projet statique Hodifly : chaque fichier JavaScript qu'il contient devient un endpoint HTTP sous `/api/` de votre propre domaine. Aucun fichier de configuration n'est nécessaire.

## Routage

Un fichier, une URL. Le chemin du fichier décide de l'endpoint :

| Fichier | URL |
| ---- |
| `api/hello.js` | `/api/hello` |
| `api/contact/index.js` | `/api/contact` |
| `api/user/[id].js` | `/api/user/42` (le paramètre `id` reçoit `"42"`) |

Les chemins littéraux gagnent sur les paramètres `[entre crochets]`, et les fichiers `.js`, `.mjs` et `.cjs` fonctionnent tous. Les fonctions TypeScript et Python ne sont pas prises en charge pour le moment : elles répondent 404, et le journal de déploiement le signale.

## Écrire une fonction

Les deux styles de handler courants sont pris en charge, même mélangés dans un projet.

Signature classique (à la Express) :

```js
// api/hello.js
export default function handler(req, res) {
  // req.query, req.body (JSON et formulaires sont parsés), req.cookies
  res.status(200).json({ hello: "world" });
}
```

Signature standard web :

```js
// api/user/[id].js
export function GET(request) {
  return Response.json({ ok: true });
}
```

`module.exports = (req, res) => ...`, les exports par méthode (`GET`, `POST`, ...) avec 405 automatique pour le reste, et `export default { fetch(request) {...} }` fonctionnent aussi. Vos fonctions peuvent importer des paquets de votre `package.json` : les dépendances installées pour le build sont disponibles à l'exécution.

## Variables d'environnement et secrets

Les variables d'environnement du projet (Réglages avancés, chiffrées au repos, jamais envoyées à Hodi) sont accessibles dans vos fonctions via `process.env.MA_VARIABLE`. C'est l'endroit prévu pour les clés d'API : le code source des fonctions n'est jamais servi en statique, et demander un chemin source comme `/api/hello.js` répond 404.