Retour : page principale > sommaire applications générales > Documentation TBF

TBFramework - Rest Serveur et Rest Service


La classe RestServeur est la classe principale gérant les services web de type REST, traitant les URL reçues et appelant les méthodes correspondantes de la classe RestService.
Les services doivent ĂȘtre dĂ©veloppĂ©es selon une arborescence prĂ©cise.
L'URL doit ĂȘtre de la forme http://www.mondomaine.org/services/[apiVersion]/[mon-service]/ .


Rest Serveur

Config

Les paramĂštres suivants doivent ĂȘtre dĂ©finies :
  • debogage : boolĂ©en indiquant si l'on souhaite afficher le dĂ©bogage,
  • debogage_mode :
    • "php:Debug::MODE_ECHO" : le message est affichĂ© en utilisant echo,
    • "php:Debug::MODE_NOTICE" : le message est affichĂ© en utilisant une erreur de type notice
    • "php:Debug::MODE_ENTETE_HTTP" : les messages sont envoyĂ©s dans un entĂȘte HTTP "X_REST_DEBOGAGE") ,
  • serveur.baseURL : chemin pour accĂ©der aux services,
  • chemin_modules : chemin vers les dossiers modules.

Fonctions

  • La fonction construct() analyse les donnĂ©es envoyĂ©es au serveur, enregistre la mĂ©thode HTTP utilisĂ©e pour appeler le serveur et parse l'url appelĂ©e pour trouver le service demandĂ©.
  • La fonction executer() exĂ©cute la requĂȘte en faisant appel aux fonctions consulter(), ajouter(), modifier() et supprimer() de la classe Rest Service en fonction que la demande soit GET, PUT, POST ou DELETE.
  • La fonction envoyerEnteteStatutHttp($code) envoie un entĂȘte HTTP (version 1.0) de statut. Elle prend en paramĂštre un code correspondant au statut de rĂ©ponse de la requĂȘte (nom = code => texte : dĂ©finition) :
    • HTTP_CODE_OK = '200' => 'OK' : succĂšs de l'accĂšs Ă  un service web par la mĂ©thode GET,
    • HTTP_CODE_CREATION_OK = '201' => 'Created' : succĂšs de l'accĂšs Ă  un service web et de la crĂ©ation ou de la modification de la ressource,
    • HTTP_CODE_SUPPRESSION_OK = '204' => 'No Content' : succĂšs de l'accĂšs Ă  un service web et de la suppression de la ressource,
    • HTTP_CODE_MAUVAISE_REQUETE = '400' => 'Bad Request' : les paramĂštres envoyĂ©s au service contiennent des erreurs,
    • HTTP_CODE_ACCES_NON_AUTORISE = '401' => 'Unauthorized' : l'accĂšs Ă  un service web est refusĂ© car l'authentification (obligatoire) a Ă©chouĂ© pour accĂ©der Ă  la ressource,
    • HTTP_CODE_RESSOURCE_INTROUVABLE = '404' => 'Not Found' : la ressource indiquĂ©e par l'url est introuvable,
    • HTTP_CODE_METHODE_NON_AUTORISE = '405' => 'Method Not Allowed' : le service web ne possĂšde pas d'accĂšs Ă  la ressource correspondant Ă  la mĂ©thode HTTP employĂ©e ou que la mĂ©thode HTTP enployĂ©e n'est pas en accord avec la ressource indiquĂ©e par l'url,
    • HTTP_CODE_CONFLIT = '409' => 'Conflict' : un conflit est survenu vis Ă  vis de la ressource,
    • HTTP_CODE_CONTENU_REQUIS = '411' => 'Length Required' : il manque des paramĂštres nĂ©cessaires au service dans le contenu de la requĂȘte,
    • HTTP_CODE_ERREUR = '500' => 'Internal Server Error' : le serveur ou un service soulĂšve une erreur ou une exception.
  • La fonction gererErreurs() gĂšre des exceptions ou des erreurs soulevĂ©es par le serveur ou les services. L'affichage dĂ©pend du mode de dĂ©bogage choisi dans la variable debogage_mode du fichier Config. Il est possible de retourner les erreurs et avertissements PHP dans l'entĂȘte de la rĂ©ponse Ă  l'aide du paramĂȘtre de config suivant : debogage_mode="php:Debug::MODE_ENTETE_HTTP". Toutefois, les services web ne devrait pas dĂ©clencher d'erreur ou d'avertissement Ă  l'aide de trigger_error mais plutĂŽt retourner les codes HTTP correspondant au problĂšme rencontrĂ©.

Rest Service
Les fonctions de cette classe sont appelĂ©es par la classe Rest Serveur en fonction du type de requĂȘte HTTP :
  • consulter($ressources, $paramĂ©tres) par GET,
  • ajouter($ressources, $requeteDonnees) par PUT (requĂȘte HTTP de type PUT ou POST sans indication de ressource Ă  modifier).,
  • modifier($ressources, $requeteDonnees) par POST,
  • supprimer($ressources) par DELETE (requĂȘte HTTP de type DELETE ou POST avec action=DELETE).
Ces fonctions retournent par dĂ©faut un code erreur mĂ©thode non autorisĂ©e (Rest Serveur : HTTP_CODE_METHODE_NON_AUTORISE) et doivent donc ĂȘtre redĂ©finies dans la classe fille.