[Previous][Up][Next] Reference for unit 'HTTPRoute' (#fcl)

HTTP Router Methods and RESTful APIs

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.

Documentation generated on: Jan 27 2026