LightREST

Composant Serveur API REST pour WinDev®
Léger.
Rapide.
Gratuit.
Sans licence Serveur.

La classe lrRequest

La classe lrRequest permet à la fonction WinDev® lancée lors de l’appel à une route REST, de recevoir le contenu de la requête HTTP afin de la traiter, et de renvoyer le résultat à l’appelant.

La classe lrRequest implémente les Membres et Méthodes décrites ci-dessous.

MembreTypeDescription
BodychaîneCorps de la requête.
Uniquement renseigné pour les méthodes POST, PUT et PATCH
MethodchaîneMéthode appelée par le client REST.
Correspond à une des actions supportées par LightREST (classe lrServer):

ConstanteDescription
MethodGETMéthode REST “GET”
MethodPOSTMéthode REST “POST”
MethodPUTMéthode REST “PUT”
MethodDELETEMéthode REST “DELETE”
MethodHEADMéthode REST “HEAD”
MethodPATCHMéthode REST “PATCH”
MethodOPTIONSMéthode REST “OPTIONS”
URLlrURLDescription de l’URL de la requête
MembreTypeDescription
SchemeChainePréfixe de l’URL (généralement http:// ou https://)
UserChaineUtilisateur
HostChaineHôte
PathChaineChemin d’appel
RawPathChaineChemin d’appel brut
QueryValuesTableau Associatif de ChainesVariables contenues dans l’URL
ProtochaîneVersion du protocole HTTP
Headertableau associatif de chaînesEntêtes (HEADERS)
ContentLengthentier sur 8 octetsTaille de la requête
HostchaîneHôte
PostFormtableau associatif de chaînesContenu du formulaire HTTP
Filestableau associatif de lrFileFichiers attachés à la requête
MembreTypeDescription
NameChaineNom du fichier
ContentBufferContenu du fichier
RemoteAddrchaîneAdresse IP du client
RequestURIchaîneRoute appelée
AuthenticationlrAuthenticationAuthentification du client
Varstableau associatif de chaînesVariables passées dans la Route (entre {})
MéthodeUtilisation
GetHeaderValueRécupère la valeur d’une entête (HTTP HEADER) dans la requête REST
GetHeaderSubValueRécupère la valeur d’une sous-entête (HTTP HEADER) dans la requête REST
GetRouteValueRécupère la valeur d’une variable passée dans la route
GetURLValueRécupère la valeur d’une variable passée dans l’URL

Méthode GetHeaderValue(Entête) : chaine

Récupération de la valeur d’une entête HTTP (HEADER) dans la requête envoyée par la client.

Il est également possible d’interroger directement le tableau associatif lrRequest:Header.

ParamètreTypeDescription
EntêteChaîneNom de l’entête HTTP à récupérer dans la requête REST

Retour : Chaine : Valeur correspondant à l’entête demandée. Vide si l’entête est inexistante.

Exemple :

procédure MaProcREST(pRequest est lrRequest) : lrReponse
cValEntete est chaine
oResponse est lrResponse

cValEntete = pRequest:GetHeaderValue("SESSION_ID")

oResponse:Body        = "On a reçu le HEADER SESSION_ID="+cValEntete
oResponse:RetCode     = lrResponse::StatusOK
oResponse:ContentType = lrResponse::ContentTXT

RENVOYER oResponse

Méthode GetHeaderSubValue(Entête, Sous Entête) : chaine

Récupération de la valeur d’une sous-entête HTTP (HEADER) dans la requête envoyée par la client. Utile par exemple pour récupérer la valeur d’un header avec valeurs multiples comme Cache-Control.

ParamètreTypeDescription
EntêteChaîneNom de l’entête HTTP à récupérer dans la requête REST
Sous-entêteChaîneNom de la sous-entête HTTP à récupérer dans la requête REST

Retour : Chaine : Valeur correspondant à l’entête demandée. Vide si l’entête est inexistante.

Exemple :

procédure MaProcREST(pRequest est lrRequest) : lrReponse
cValEntete est chaine
oResponse est lrResponse

si pRequest:GetHeaderSubValue("Cache-Control", "no-cache")<>"" alors
      oResponse:Body        = "Pas de cache demandé !"
sinon
      oResponse:Body        = "Cache activé"
fin
oResponse:RetCode     = lrResponse::StatusOK
oResponse:ContentType = lrResponse::ContentTXT

RENVOYER oResponse


Fonction GetRouteValue(Variable) : chaine

Récupération de la valeur d’une variable passée dans la Route de la requête HTTP.

Il est également possible d’interroger directement le tableau associatif lrRequest:Vars.

ParamètreTypeDescription
VariableChaîneNom de la variable à récupérer dans la route REST
(définie entre {} lors de la création de la Route)

Retour : Chaine : Valeur correspondant à la variable demandée. Vide si l’entête est inexistante.

Exemple :

Soit une route définie comme /client/{id_soc}/{id_client}

On appelle l’URL : http://rest.fr/client/Acme/2468

lrRequest:GetVarValue("id_soc")    // retournera "Acme"
lrRequest:GetVarValue("id_client") // retournera "2468"

Méthode GetUrlValue(Variable) : chaine

Récupération de la valeur d’une variable passée dans l’URL de la requête HTTP.

Il est également possible d’interroger directement le tableau associatif lrRequest:URL.QueryValues.

ParamètreTypeDescription
VariableChaîneNom de la variable à récupérer dans l’URL

Retour : Chaine : Valeur correspondant à la variable demandée. Vide si l’entête est inexistante.

Exemple :
Appel de l’URL http://rest.fr/client?nom=DUP&zipcode=06000

lrRequest:GetUrlValue("nom") // retournera "DUP"
lrRequest:GetUrlValue("zip") // retournera "06000"