Tests et verification

Checklist de verification, commandes curl, erreurs courantes et integration optionnelle du module documentation.

Tests et verification

Apres avoir deploye votre site, suivez cette checklist pour verifier que tout fonctionne.

Checklist de verification

  • Le backend est accessible (/api/health repond 200)
  • Le token est valide (requete avec token retourne 200, pas 401)
  • Les donnees sont presentes (le module a du contenu publie)
  • Le CORS fonctionne (requete depuis le navigateur, pas d'erreur CORS)
  • Le site affiche les donnees correctement

Commandes curl de test

1. Verifier que le backend est en ligne

curl -s "https://api.zoddev.site/api/health" \
  -H "Origin: https://app.zoddev.site"
# Attendu : {"status":"ok"} ou equivalent

2. Tester un endpoint avec votre token

curl -s "https://api.zoddev.site/api/blog/v1/public/posts" \
  -H "x-api-key: <VOTRE_TOKEN>" \
  -H "X-Project-Id: 1" \
  -H "Origin: https://votre-site.com"
# Attendu : {"success":true,"data":[...]}

3. Verifier les headers CORS

curl -s "https://api.zoddev.site/api/blog/v1/public/posts" \
  -H "x-api-key: <VOTRE_TOKEN>" \
  -H "Origin: https://votre-site.com" \
  -v 2>&1 | grep -i "access-control"
# Attendu : Access-Control-Allow-Origin: https://votre-site.com

4. Tester un endpoint inexistant (doit retourner 404, pas 401)

curl -s "https://api.zoddev.site/api/blog/v1/public/inexistant" \
  -H "x-api-key: <VOTRE_TOKEN>" \
  -H "Origin: https://votre-site.com"
# Attendu : 404 Not Found (pas 401/403)

Erreurs courantes

Code Message Cause probable Solution
400 Project ID required Token global sans X-Project-Id Ajoutez le header X-Project-Id ou utilisez un token project-scoped
401 Invalid API token Token invalide, expire ou revoque Verifiez le token dans le dashboard, recreez-en un si necessaire
401 API token required Aucun token envoye Ajoutez le header x-api-key ou Authorization: Bearer
403 Forbidden Permission insuffisante ou origine non autorisee Verifiez les entites/permissions du token et les origines autorisees
403 Entity access denied Le token n'a pas acces a cette entite Ajoutez l'entite manquante au token
404 Not found Endpoint inexistant ou ressource non publiee Verifiez le path et que le contenu est en statut published
429 Too many requests Rate limiting atteint Implementez du cache cote client, reduisez la frequence des appels

Test depuis le navigateur

  1. Ouvrez votre site deploye
  2. Ouvrez les DevTools (F12) > onglet Network
  3. Rechargez la page
  4. Verifiez les requetes vers api.zoddev.site :
    • Status : 200
    • Response : JSON avec les donnees attendues
    • Headers : Access-Control-Allow-Origin present

Integration optionnelle : module Documentation

Vous pouvez ajouter une section documentation a votre site externe en consommant le module docs.

Etape 1 : Token avec entite documentation

Ajoutez documentation aux entites de votre token existant, ou creez un token dedie.

Etape 2 : Fichier docs-config.js

export const DOCS_CONFIG = {
  API_URL: 'https://api.zoddev.site/api/docs/v1/public',
  API_TOKEN: '<VOTRE_TOKEN_DOCS>',
  PROJECT_ID: '1',
  SPACE_SLUG: 'api-blog', // slug du space a afficher
  CACHE_DURATION: 300000,
};

Etape 3 : Client docs-api.js

import { DOCS_CONFIG } from './docs-config.js';

const cache = new Map();

async function request(endpoint) {
  const url = `${DOCS_CONFIG.API_URL}/${endpoint}`;
  const now = Date.now();
  const cached = cache.get(url);
  if (cached && now - cached.timestamp < DOCS_CONFIG.CACHE_DURATION) {
    return cached.data;
  }

  const res = await fetch(url, {
    headers: {
      'x-api-key': DOCS_CONFIG.API_TOKEN,
      'X-Project-Id': DOCS_CONFIG.PROJECT_ID,
    },
  });
  const json = await res.json();
  const data = json.data ?? json;
  cache.set(url, { data, timestamp: now });
  return data;
}

export const getSpacePages = (slug) =>
  request(`spaces/${encodeURIComponent(slug || DOCS_CONFIG.SPACE_SLUG)}/pages`);

export const getPageBySlug = (slug) =>
  request(`pages/${encodeURIComponent(slug)}`);

export const searchDocs = (query) =>
  request(`search?q=${encodeURIComponent(query)}`);

Etape 4 : Routes dans votre site

Ajoutez des routes #/docs et #/docs/:slug dans votre router pour afficher la liste des pages et le contenu individuel.

Le contenu des pages est en Markdown — utilisez une librairie comme marked ou showdown pour le rendu HTML.