Sign in Join
FPDoc Onlineexperiment

HttpRouterMethods topic

In unit HTTPRoute

HTTP Router Methods and RESTful APIs

Declaration

pascal
HttpRouterMethods

Description

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.