archinsa/api.md
2023-10-22 19:24:59 +02:00

3.8 KiB

API PHP

Ce document décrit le comportement de l'api utilisée par le site

Endpoints

Authentification

  • Endpoint: auth.php?auth
  • Description: Authentifie l'utilisateur et initialise une session.
  • Méthode HTTP: GET
  • Réponse JSON:
    {
      "status": 1,
      "msg": "Authentification réussie."
    }
    
    En cas d'erreur :
    {
      "status": 0,
      "msg": "Erreur pendant le traitement de la requête."
    }
    
    

Déconnexion

  • Endpoint: auth.php?unauth
  • Description: Déconnecte l'utilisateur en mettant fin à la session.
  • Méthode HTTP: GET
  • Réponse JSON:
    {
      "status": 1,
      "msg": "Déconnexion réussie."
    }
    

Test d'authentification

  • Endpoint: auth.php?test_auth
  • Description: Vérifie si l'utilisateur est authentifié.
  • Méthode HTTP: GET
  • Réponse JSON:
    • Si l'utilisateur est authentifié :
      {
        "status": 1,
        "msg": "Utilisateur bien authentifié."
      }
      
    • Si l'utilisateur n'est pas authentifié :
      {
        "status": 4,
        "msg": "Utilisateur non authentifié."
      }
      

Statuts de réponse

  • Status 1 : Requête valide.
  • Status 0 : Erreur pendant le traitement de la requête.
  • Status 2 : Requête invalide.
  • Status 3 : Session expirée.
  • Status 4 : Utilisateur non authentifié, requête interdite.

Gestion des sessions

Le fichier session_verif.php est inclus pour la gestion des sessions. Assurez-vous qu'il est présent et correctement configuré.


Remarque : Ce document est une documentation basique. Assurez-vous d'ajuster et d'améliorer la sécurité en fonction des besoins spécifiques de votre application.

upload de plusieurs fichiers :

async function uploadMultiple(donneesFormulaires) {
  try {
    const reponse = await fetch("https://example.com/api", {
      method: "POST",
      body: donneesFormulaires,
    });
    const resultat = await reponse.json();
    console.log("Réussite :", resultat);
  } catch (erreur) {
    console.error("Erreur :", erreur);
  }
}

const docs = document.querySelector('input[type="file"][multiple]');
const donneesFormulaires = new FormData();

donneesFormulaires.append("title", "documents");

for (const [i, doc] of Array.from(docs.files).entries()) {
  donneesFormulaires.append(`doc_${i}`, doc);
}

uploadMultiple(donneesFormulaires);

upload de données json


async function postJSON(donnees) {
  try {
    const reponse = await fetch("https://example.com/profile", {
      method: "POST", // ou 'PUT'
      headers: {
        "Content-Type": "application/json",
      },
      body: JSON.stringify(donnees),
    });

    const resultat = await reponse.json();
    console.log("Réussite :", resultat);
  } catch (erreur) {
    console.error("Erreur :", erreur);
  }
}

const donnees = { login: "Jean Biche" };
postJSON(donnees);

récupérer des documents


async function fetchImage() {
  try {
    const response = await fetch("flowers.jpg");
    if (!response.ok) {
      throw new Error("La réponse n'est pas OK");
    }
    const myBlob = await response.blob();
    monImage.src = URL.createObjectURL(myBlob);
  } catch (error) {
    console.error("Un problème est survenu lors de la récupération :", error);
  }
}


source

récupérer des données



async function test_auth(){
  resp = await fetch("/annales/api.php?test_auth");
  data = await resp.json();
  document.getElementById("user_status").innerText = data["msg"];
}

  async function unauthenticate_user(){
      resp = await fetch("/annales/api.php?unauth");
      data = await resp.json();
      if(data.status == 1){
          document.getElementById("user_status").innerText = data["msg"];
      }
  }