Erholte Erweiterung für das Daraja HTTP -Framework
Hier ist ein kurzes Beispiel. Es registriert einen Anforderungshandler bei Path Hello, der HTTP -GETP -Anforderungen abwickelt, jedoch nur, wenn die HTTP -Anforderung auch angibt, dass der Client Antworten mit Inhaltstyp Text/HTML akzeptiert. (Eine HTTP -Fehlerantwort wird zurückgegeben, wenn der HTTP -Client versucht, eine Postanforderung einzureichen, oder wenn der Client einen anderen Inhaltstyp angibt.)
&Path('hello');
&Produces('text/html');
GET
(procedure(Request: TdjRequest; Response: TdjResponse)
begin
Response.ContentText := '<html>Hello world!</html>';
end);
Das Framework unterstützt Pfadparameter, so dass http: //mydomain.local/myapp/orders/123 in diesen parametrisierten Anforderungshandler weitergeleitet wird:
&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);
Wenn eine Ressource mehr als eine Darstellung (HTML, XML oder JSON) hat, kann dies unter Verwendung desselben Pfadwerts behandelt werden, aber unterschiedlicher MIME -Typ erzeugt Attribute:
// 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);