Extensão RESTful para a estrutura Daraja HTTP
Aqui está um pequeno exemplo, ele registra um manipulador de solicitação no Path Hello, que lida com solicitações HTTP GET, mas somente se a solicitação HTTP também especificar que o cliente aceita respostas com o tipo de conteúdo Tipo de texto/html. (Uma resposta de erro HTTP será retornada se o cliente HTTP tentar enviar uma solicitação de postagem ou se o cliente especificar um tipo de conteúdo diferente).
&Path('hello');
&Produces('text/html');
GET
(procedure(Request: TdjRequest; Response: TdjResponse)
begin
Response.ContentText := '<html>Hello world!</html>';
end);
A estrutura suporta parâmetros do caminho, de modo que http: //mydomain.local/myapp/orders/123 seja roteado para este manipulador de solicitação 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);
Se um recurso tiver mais de uma representação (HTML, XML ou JSON), isso pode ser tratado usando o mesmo valor de caminho, mas o tipo MIME diferente produz 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);