Extensión RESTFULA para el marco Daraja HTTP
Aquí hay un breve ejemplo, registra un controlador de solicitudes en Rath Hello que maneja las solicitudes HTTP GET, pero solo si la solicitud HTTP también especifica que el cliente acepta respuestas con texto de tipo de contenido/HTML. (Se devolverá una respuesta de error HTTP si el cliente HTTP intenta enviar una solicitud de publicación, o si el cliente especifica un tipo de contenido diferente).
&Path('hello');
&Produces('text/html');
GET
(procedure(Request: TdjRequest; Response: TdjResponse)
begin
Response.ContentText := '<html>Hello world!</html>';
end);
El marco admite los parámetros de ruta, de modo que http: //mydomain.local/myapp/orders/123 se enrutará a este controlador de solicitud parametrizado:
&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 un recurso tiene más de una representación (HTML, XML o JSON), esto se puede manejar utilizando el mismo valor de ruta, pero diferente tipo MIME produce atributos:
// 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);