Clé API et confidentialité

Exemple : un backend Node.js / Express pour sécuriser sa clé Mistral

Structure du projet

mon-backend/
├── .env
├── .gitignore
├── server.js
└── package.json

Installation

bash

npm init -y
npm install express dotenv node-fetch
```

**Le fichier `.env`**

La clé API est stockée ici, jamais dans le code :
```
MISTRAL_API_KEY=votre_clé_ici
```

**Le fichier `.gitignore`**

Ce fichier garantit que la clé ne sera jamais déposée sur GitHub :
```
.env
node_modules

Le fichier server.js

javascript

import 'dotenv/config';
import express from 'express';

const app = express();
app.use(express.json());

app.post('/api/chat', async (req, res) => {
  const { message } = req.body;

  const response = await fetch('https://api.mistral.ai/v1/chat/completions', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'Authorization': `Bearer ${process.env.MISTRAL_API_KEY}`
    },
    body: JSON.stringify({
      model: 'mistral-tiny',
      messages: [{ role: 'user', content: message }]
    })
  });

  const data = await response.json();
  res.json(data);
});

app.listen(3000, () => console.log('Serveur démarré sur le port 3000'));

Appel depuis le navigateur

Le frontend n’a plus connaissance de la clé. Il communique uniquement avec le backend :

javascript

const response = await fetch('http://localhost:3000/api/chat', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ message: 'Bonjour Mistral !' })
});

const data = await response.json();
console.log(data);