-
Notifications
You must be signed in to change notification settings - Fork 0
/
microservice.pas
51 lines (45 loc) · 1.12 KB
/
microservice.pas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
program microservice;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}cthreads, cmem,{$ENDIF}
SysUtils, fphttpapp, httpdefs, httproute, fpjson, jsonparser;
procedure jsonResponse(var res: TResponse; data: String);
begin
res.Content := data;
res.Code := 200;
res.ContentType := 'application/json';
res.ContentLength := length(res.Content);
res.SendContent;
end;
procedure timeEndpoint(req: TRequest; res: TResponse);
var
jObject : TJSONObject;
begin
jObject := TJSONObject.Create;
try
jObject.Strings['time'] := TimeToStr(Time);
jsonResponse(res, jObject.AsJSON);
finally
jObject.Free;
end;
end;
procedure greetingEndpoint(req: TRequest; res: TResponse);
var
jObject : TJSONObject;
begin
jObject := TJSONObject.Create;
try
jObject.Strings['greeting'] := 'Hello, ' + req.RouteParams['name'];
jsonResponse(res, jObject.AsJSON);
finally
jObject.Free;
end;
end;
begin
Application.Port := 9080;
HTTPRouter.RegisterRoute('/time', @timeEndpoint, true);
HTTPRouter.RegisterRoute('/greeting/:name', @greetingEndpoint);
Application.Threaded := true;
Application.Initialize;
Application.Run;
end.