HttpRouterMethods topic
HTTP Router Methods and RESTful APIs
Declaration
HttpRouterMethodsDescription
Routes can be configured to handle different HTTP methods (GET, POST, PUT, DELETE, etc.). The same URL pattern can have different handlers for different methods, enabling RESTful API design. This allows implementing CRUD operations on the same resource endpoint.
program MethodRouter;
{$mode objfpc}{$H+}
uses
httproute, httpdefs;
procedure HandleGetUsers(ARequest: TRequest; AResponse: TResponse);
begin
AResponse.Content := '{"users": ["alice", "bob", "charlie"]}';
AResponse.ContentType := 'application/json';
end;
procedure HandleCreateUser(ARequest: TRequest; AResponse: TResponse);
begin
AResponse.Content := '{"status": "user created", "id": 123}';
AResponse.ContentType := 'application/json';
AResponse.Code := 201;
end;
procedure HandleUpdateUser(ARequest: TRequest; AResponse: TResponse);
begin
AResponse.Content := '{"status": "user updated"}';
AResponse.ContentType := 'application/json';
end;
procedure HandleDeleteUser(ARequest: TRequest; AResponse: TResponse);
begin
AResponse.Code := 204; // No Content
end;
begin
HTTPRouter.RegisterRoute('/users', rmGet, @HandleGetUsers, False);
HTTPRouter.RegisterRoute('/users', rmPost, @HandleCreateUser, False);
HTTPRouter.RegisterRoute('/users/:id', rmPut, @HandleUpdateUser, False);
HTTPRouter.RegisterRoute('/users/:id', rmDelete, @HandleDeleteUser, False);
Writeln('RESTful API routing:');
Writeln('GET /users - List users');
Writeln('POST /users - Create user');
Writeln('PUT /users/:id - Update user');
Writeln('DELETE /users/:id - Delete user');
end.An experiment, built from development snapshots. Not the official Free Pascal or Lazarus documentation.
