Roteamento Básico
Rotas determinam como a aplicação responderá a uma requisição do cliente em um caminho específico chamado endpoint, que é uma URI que especifica um método do protocolo HTTP (POST, PUT, GET, DELETE e além).
Cada rota pode ter mais de um tratamento, que responderá de acordo com a requisição correspondente.
Estrutura
Uma rota possui a seguinte estrutura:
THorse.METHOD(PATH, HANDLER);
Onde:
THorse
é a instancia atual do Horse;METHOD
é um método do protocolo HTTP;PATH
é um caminho no servidor;HANDLER
é a função que será executada quando a rota for acessada;
Exemplos
Os exemplos a seguir ilustram a definição de rotas simples:
Responder a uma requisição GET para a rota /users
:
THorse.Get('/users',
procedure(Req: THorseRequest; Res: THorseResponse; Next: TProc)
begin
Res.Send('GET Users');
end);
procedure DoGetUsers(Req: THorseRequest; Res: THorseResponse; Next: TNextProc);
begin
Res.Send('GET Users');
end;
begin
THorse.Get('/users', DoGetUsers);
end.
Responder a uma requisição POST para a rota /users
:
THorse.Post('/users',
procedure(Req: THorseRequest; Res: THorseResponse; Next: TProc)
begin
Res.Send('POST Users');
end);
procedure DoPostUsers(Req: THorseRequest; Res: THorseResponse; Next: TNextProc);
begin
Res.Send('POST Users');
end;
begin
THorse.Post('/users', DoPostUsers);
end.
Responder a uma requisição PUT para a rota /users/:id
:
THorse.Put('/users/:id',
procedure(Req: THorseRequest; Res: THorseResponse; Next: TProc)
begin
Res.Send('PUT Users');
end);
procedure DoPutUser(Req: THorseRequest; Res: THorseResponse; Next: TNextProc);
begin
Res.Send('PUT Users');
end;
begin
THorse.Put('/users/:id', DoPutUser);
end.
Responder a uma requisição DELETE para a rota /users/:id
:
THorse.Delete('/users/:id',
procedure(Req: THorseRequest; Res: THorseResponse; Next: TProc)
begin
Res.Send('DELETE Users');
end);
procedure DoDeleteUser(Req: THorseRequest; Res: THorseResponse; Next: TNextProc);
begin
Res.Send('DELETE Users');
end;
begin
THorse.Delete('/users/:id', DoDeleteUser);
end.