\RestServeur

Classe principale gérant les services web de type (@link(REST, http://fr.wikipedia.org/wiki/Rest).

Elle contient :

Ce serveur REST accepte 4 types de méthodes HTTP : GET, PUT, POST, DELETE. GET et POST ne pose généralement pas de problème pour les clients HTTP mais ce n'est pas forcément le cas pour PUT et DELETE. Vous pouvez donc pour réaliser :

  • DELETE : utiliser la méthode POST avec action=DELETE dans le corps de la requête.
  • PUT : utiliser la méthode POST avec une url ne contenant aucune indication de ressource. Une autre solution consiste à utiliser n'importe quelle méthode et à ajouter l'entête "X_HTTP_METHOD_OVERRIDE" avec pour valeur le nom de la méthode que vous souhaitez utiliser. Exemple d'entête : "X_HTTP_METHOD_OVERRIDE: PUT". Exemple : curl -v -v -H "X_HTTP_METHOD_OVERRIDE: DELETE" "http://www.mondomaine.org/services/apiVersion/[mon-service]/"</code> Cela fonctionne avec Apache.

Les classes des services web doivent avoir un nom au format ChatMot "MonService" et être appelée dans l'url par le même nom en minuscule où les mots sont séparés par des tirets "mon-service".

Paramètres liés dans config.ini :

  • serveur.baseURL : morceau de l'url pour appeler le serveur relative au domaine. Exemple : pour http://www.tela-botanica.org/mon_serveur/ mettre : "/mon_serveur/"
  • serveur.baseAlternativeURL : sur le même principe que ci-dessus permet d'affecter une deuxième url (pour gérer des raccourci via htaccess)

Encodage en entrée : utf8 Encodage en sortie : utf8

Summary

Methods
Properties
Constants
__construct()
chargerClasse()
executer()
envoyerEnteteStatutHttp()
gererErreurs()
ajouterMessage()
No public properties found
METHODE_GET
METHODE_POST
METHODE_DELETE
METHODE_PUT
HTTP_CODE_OK
HTTP_CODE_CREATION_OK
HTTP_CODE_SUPPRESSION_OK
HTTP_CODE_MAUVAISE_REQUETE
HTTP_CODE_ACCES_NON_AUTORISE
HTTP_CODE_RESSOURCE_INTROUVABLE
HTTP_CODE_METHODE_NON_AUTORISE
HTTP_CODE_CONFLIT
HTTP_CODE_CONTENU_REQUIS
HTTP_CODE_ERREUR
MOTIF_API_VERSION
MOTIF_SERVICE_NOM
No protected methods found
No protected properties found
N/A
initialiserMethode()
initialiserRequeteDonnees()
decouperUrlChemin()
initialiserApiVersion()
verifierApiVersion()
initialiserServiceNom()
verifierServiceNom()
traiterNomService()
initialiserRessource()
initialiserParametres()
recupererParametresGet()
nettoyerParametres()
recupererParametresBruts()
get()
post()
put()
delete()
parserDonneesRequete()
cloreAccesServeur()
envoyerMessages()
$debogageActivation
$debogageMode
$methode
$requeteDonnees
$requeteDonneesParsees
$apiVersion
$service
$ressources
$parametres
$parametresBruts
$config
$messages
$http10
$parametres_obligatoires
N/A

Constants

METHODE_GET

METHODE_GET

Nom de la méthode appelée dans un service pour éxécuter une requête de type GET.

METHODE_POST

METHODE_POST

Nom de la méthode appelée dans un service pour éxécuter une requête de type POST.

METHODE_DELETE

METHODE_DELETE

Nom de la méthode appelée dans un service pour éxécuter une requête de type DELETE.

METHODE_PUT

METHODE_PUT

Nom de la méthode appelée dans un service pour éxécuter une requête de type PUT.

HTTP_CODE_OK

HTTP_CODE_OK

Code HTTP 200 indiquant le succès de l'accès à un service web par la méthode GET.

L'utiliser lors d'une requète de type GET (consulter) pour indiquer le succès de l'opération. Sera renvoyée par défaut par PHP.

HTTP_CODE_CREATION_OK

HTTP_CODE_CREATION_OK

Code HTTP 201 indiquant que l'accès à un service web est un succès et que la ressource a été créée ou modifié.

L'utiliser lors d'une requète de type PUT (ajouter) ou POST (modifier) pour indiquer le succès de l'opération.

HTTP_CODE_SUPPRESSION_OK

HTTP_CODE_SUPPRESSION_OK

Code HTTP 204 indique que l'accès à un service web est un succès et qu'il n'y a pas de contenu à renvoyer.

L'utiliser lors d'une requète de type DELETE (supprimer) pour indiquer le succès de l'opération si aucun contenu (status) ne doit être renvoyé, sinon utiliser 200 OK.

HTTP_CODE_MAUVAISE_REQUETE

HTTP_CODE_MAUVAISE_REQUETE

Code HTTP 400 indique que les paramètres envoyés au service contiennent des erreurs.

L'utiliser pour indiquer l'échec de l'accès au service. La réponse pourra contenir un message expliquant la source de l'erreur.

HTTP_CODE_ACCES_NON_AUTORISE

HTTP_CODE_ACCES_NON_AUTORISE

Code HTTP 401 indiquant que l'accès à un service web est refusé car l'authentification (obligatoire) a échoué pour accéder à la ressource.

HTTP_CODE_RESSOURCE_INTROUVABLE

HTTP_CODE_RESSOURCE_INTROUVABLE

Code HTTP 404 indiquant que la ressource indiquée par l'url est introuvable.

HTTP_CODE_METHODE_NON_AUTORISE

HTTP_CODE_METHODE_NON_AUTORISE

Code HTTP 405 indiquant soit : - que le service web ne possède pas d'accès la ressource correspondant à la méthode HTTP employée.

  • que la méthode HTTP enployée n'est pas en accord avec la ressource indiquée par l'url.

HTTP_CODE_CONFLIT

HTTP_CODE_CONFLIT

Code d'erreur HTTP 409 indiquant qu'un conflit est survenu vis à vis de la ressource.

Par exemple, essayer de créer deux fois la même ressource ou bien tenter de modifier une ressource qui a été modifiée par ailleurs.

HTTP_CODE_CONTENU_REQUIS

HTTP_CODE_CONTENU_REQUIS

Code HTTP 411 indiquant que des paramètres passés dans le contenu de la requête sont nécessaires au service.

HTTP_CODE_ERREUR

HTTP_CODE_ERREUR

Code d'erreur HTTP 500 Internal Server Error.

L'utiliser quand le serveur ou un service soulève une erreur ou une exception.

MOTIF_API_VERSION

MOTIF_API_VERSION

Motif de l'epression régulière vérfiant la version de l'API.

MOTIF_SERVICE_NOM

MOTIF_SERVICE_NOM

Motif de l'epression régulière vérfiant le nom du service.

Properties

$debogageActivation

$debogageActivation : boolean

Mettre à true pour activer l'affichage des messages d'erreurs et de débogage.

Type

boolean

$debogageMode

$debogageMode : string

Indiquer le mode de débogage à utiliser (@see Debug).

Type

string

$methode

$methode : string

La méthode de la requête HTTP utilisée.

Type

string

$requeteDonnees

$requeteDonnees : array

Le contenu brut du corps de la requête HTTP (s'il y en a).

Type

array

$requeteDonneesParsees

$requeteDonneesParsees : array

Le contenu sous forme de tableau de paires clés-valeurs du corps de la requête HTTP (s'il y en a).

Type

array

$parametres

$parametres : array

Partie de l'url situé après le '?' servant à paramétrer le service demandé.

Les données proviennent de $GET où les caractères suivant ont été transformé en '' undescrore dans les clés :

Type

array

$config

$config : array

Tableau contenant les paramètres de configuration du serveur.

Type

array

$messages

$messages : array

Tableau contenant les messages d'erreur et/ou d'avertissement du Serveur.

Type

array

$http10

$http10

Codes HTTP.

$parametres_obligatoires

$parametres_obligatoires

Tableau des noms des paramètres à définir dans le fichier de config car obligatoirement nécessaire à cette classe.

Methods

__construct()

__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é.

chargerClasse()

chargerClasse( $classe) : void

La méthode __autoload() charge dynamiquement les classes trouvées dans le code.

Cette fonction est appelée par php5 quand il trouve une instanciation de classe dans le code.

Parameters

$classe

executer()

executer()

Execute la requête.

envoyerEnteteStatutHttp()

envoyerEnteteStatutHttp(int $code)

Envoyer un entête HTTP (version 1.0) de statut.

Il remplacera systématiquement tout entête HTTP de statut précédement envoyé.

Parameters

int $code

entier indiquant le code du statut de l'entête HTTP à envoyer.

gererErreurs()

gererErreurs()

Si des exceptions ou des erreurs sont soulevées par le serveur ou les services, elles sont gérées par cette méthode.

Si nous avec des erreurs d'un type différent d'E_USER_NOTICE (réservé au débogage), elle sont renvoyées sur la sortie standard (via echo). Si seulement des erreurs de type E_USER_NOTICE, sont présentes, elle sont envoyées en fonction du contenu du paramètre de config "debogage_mode" :

  • Debug::MODE_ECHO : les messages sont affichés en utilisant echo au moment où ils sont déclenchés dans le code.
  • Debug::MODE_NOTICE : les message sont stockés par le gestionnaire d'exception sous forme d'erreur de type E_USER_NOTICE et sont renvoyés sur la sortie standard à la fin de l'execution du programme (via echo).
  • Debug::MODE_ENTETE_HTTP : les message sont stockés par le gestionnaire d'exception sous forme d'erreur de type E_USER_NOTICE et sont renvoyés dans un entête HTTP (X_REST_DEBOGAGE_MESSAGES) à la fin de l'execution du programme.
  • Autre valeur : les messages sont formatés puis retournés par la fonction de débogage (à vous de les afficher).

ajouterMessage()

ajouterMessage(string $message)

Permet d'ajouter un message d'erreur ou d'avertissement qui sera envoyé au client.

Le message doit être au format texte et en UTF-8.

Parameters

string $message

le message à envoyer.

initialiserMethode()

initialiserMethode()

initialiserRequeteDonnees()

initialiserRequeteDonnees()

decouperUrlChemin()

decouperUrlChemin()

initialiserApiVersion()

initialiserApiVersion( $apiVersion)

Parameters

$apiVersion

verifierApiVersion()

verifierApiVersion( $apiVersion)

Parameters

$apiVersion

initialiserServiceNom()

initialiserServiceNom( $serviceNom)

Parameters

$serviceNom

verifierServiceNom()

verifierServiceNom( $serviceNom)

Parameters

$serviceNom

traiterNomService()

traiterNomService( $serviceNom)

Parameters

$serviceNom

initialiserRessource()

initialiserRessource( $urlParts)

Parameters

$urlParts

initialiserParametres()

initialiserParametres()

recupererParametresGet()

recupererParametresGet()

nettoyerParametres()

nettoyerParametres(array $parametres)

Parameters

array $parametres

recupererParametresBruts()

recupererParametresBruts()

get()

get()

Execute a GET request. A GET request fetches a list of resource when no resource name is given, a list of element when a resource name is given, or a resource element when a resource and resource unique identifier are given. It does not change the database contents.

post()

post()

put()

put()

delete()

delete()

parserDonneesRequete()

parserDonneesRequete() : array

Parse les données contenu dans le corps de la requête HTTP (= POST) en : - décodant les clés et valeurs.

  • supprimant les espaces en début et fin des clés et des valeurs.

Returns

array —

Tableau de paires clé et valeur.

cloreAccesServeur()

cloreAccesServeur( $retour)

Termine l'accès au serveur après envoir envoyer les messages.

Parameters

$retour

envoyerMessages()

envoyerMessages()

Envoie au client les éventuels messages d'erreur et d'avertissement du Serveur.

Le format d'envoie est text/plain encodé en UTF-8.