Extension reposante pour le framework Daraja HTTP
Voici un court exemple, il enregistre un gestionnaire de demandes sur Path Hello qui gère les demandes HTTP GET, mais uniquement si la demande HTTP spécifie également que le client accepte les réponses avec le type de contenu Text / HTML. (Une réponse d'erreur HTTP sera renvoyée si le client HTTP essaie de soumettre une demande de poste ou si le client spécifie un type de contenu différent).
&Path('hello');
&Produces('text/html');
GET
(procedure(Request: TdjRequest; Response: TdjResponse)
begin
Response.ContentText := '<html>Hello world!</html>';
end);
Le cadre prend en charge les paramètres de chemin, de sorte que http: //mydomain.local/myapp/orders/123 sera acheminé vers ce gestionnaire de demande paramétré:
&Path('orders/{orderId}')
&Produces('text/html');
GET
(procedure(Request: TdjRequest; Response: TdjResponse)
begin
Response.ContentText :=
Format('<html>Thank you for your order %s</html>',
[Request.Params.Values['orderId']]);
end);
Si une ressource a plus d'une représentation (HTML, XML ou JSON), cela peut être géré en utilisant la même valeur de chemin mais un type MIME différent produit des attributs:
// respond to HTML browsers
&Path('myresource');
&Produces('text/html');
GET(procedure(Request: TdjRequest; Response: TdjResponse)
begin
Response.ContentText :=
'<html>Hello world!</html>';
end);
// respond to XML client
&Path('myresource');
&Produces('application/xml');
GET(procedure(Request: TdjRequest; Response: TdjResponse)
begin
Response.ContentText := '<xml>Hello world!</xml>';
Response.CharSet := 'utf-8';
end);
// respond to JSON client
&Path('myresource');
&Produces('application/json');
GET(procedure(Request: TdjRequest; Response: TdjResponse)
begin
Response.ContentText := '{"msg":"Hello world!"}';
Response.CharSet := 'utf-8';
end);