--Du har modtaget denne besked, fordi du abonnerer på gruppen "DAPUG" i Google Grupper.Hvis du vil ophæve abonnementet på denne gruppe og ikke længere modtage mails fra den, skal du sende en mail til dapug+un...@googlegroups.com.Du kan se denne diskussion ved at gå til https://groups.google.com/d/msgid/dapug/CABUWFUKEKqGuPXkJsgQP4ukcNfKTaZOadaToUfMBNGGn4xom0A%40mail.gmail.com.
--
Du har modtaget denne besked, fordi du abonnerer på gruppen "DAPUG" i Google Grupper.
Hvis du vil ophæve abonnementet på denne gruppe og ikke længere modtage mails fra den, skal du sende en mail til dapug+un...@googlegroups.com.
Du kan se denne diskussion ved at gå til https://groups.google.com/d/msgid/dapug/CABUWFUKEKqGuPXkJsgQP4ukcNfKTaZOadaToUfMBNGGn4xom0A%40mail.gmail.com.
--
Hej Thomas,
Vedhæftet simpel rest server, basis http (for https se Thomas Riedel’s henvisning til NGINX).
Den klarer det grundlæggende for dig. Brug den eller tag hvad du kan bruge som inspiration 😊
Uses
IdCustomHTTPServer,
IdGlobal,
IdContext,
Trendware.Rest.Server,
System.JSON,
Trendware.Rest.ServerUtils;
T…
public
RestServer: Trendware.Rest.Server.TRestServer;
procedure ManageGet(AContext: TIdContext; ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo; elementCount: Integer);
procedure ManagePost(AContext: TIdContext; ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo; elementCount: Integer);
procedure ManageDelete(AContext: TIdContext; ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo; elementCount: Integer);
procedure ManagePut(AContext: TIdContext; ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo; elementCount: Integer);
end
RestServer := TRestServer.Create(nil);
try
RestServer.Username := ';
RestServer.Password := ';
RestServer.OnManageDelete := ManageDelete;
RestServer.OnManageGet := ManageGet;
RestServer.OnManagePost := ManagePost;
RestServer.OnManagePut := ManagePut;
RestServer.Port := 12345;
RestServer.Active := True;
except
RestServer.Active := False;
RestServer.Free;
raise;
end;
procedure T….ManageDelete(AContext: TIdContext; ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo; elementCount: Integer);
procedure responseOK;
begin
AResponseInfo.ResponseNo := 200;
AResponseInfo.ContentType := 'application/json';
AResponseInfo.CharSet := 'utf-8';
AResponseInfo.ContentText := '{"status": "ok"}';
AResponseInfo.ContentLength := Length(UTF8String(AResponseInfo.ContentText));
end;
procedure responseFailed;
begin
AResponseInfo.ResponseNo := 200;
AResponseInfo.ContentType := 'application/json';
AResponseInfo.CharSet := 'utf-8';
AResponseInfo.ContentText := '{"status": "not found"}';
AResponseInfo.ContentLength := Length(UTF8String(AResponseInfo.ContentText));
end;
procedure responseFailedException(e:Exception);
begin
AResponseInfo.ResponseNo := 200;
AResponseInfo.ContentType := 'application/json';
AResponseInfo.CharSet := 'utf-8';
AResponseInfo.ContentText :=
'{"status": "exception",' +
'"exception": "'+e.Message+'"}';
AResponseInfo.ContentLength := Length(UTF8String(AResponseInfo.ContentText));
end;
var
path, fext: string;
begin
if (elementCount = 1) and (AnsiCompareText(TRestServer.GetElement(ARequestInfo.Document, 1), 'deleteFile') = 0) and (ARequestInfo.Params.Count > 0) then
begin
path := ARequestInfo.Params[0];
CoInitialize(nil);
try
fext := ExtractFileExt(path);
if (AnsiCompareText(fext, '.mp4') <> 0) and
(AnsiCompareText(fext, '.avi') <> 0) and
(AnsiCompareText(fext, '.mov') <> 0) and
(AnsiCompareText(fext, '.m4v') <> 0) and
(AnsiCompareText(fext, '.asf') <> 0) and
(AnsiCompareText(fext, '.wmv') <> 0) and
(AnsiCompareText(fext, '.3g2') <> 0) and
(AnsiCompareText(fext, '.3gp2') <> 0) and
(AnsiCompareText(fext, '.3gpp') <> 0) and
(AnsiCompareText(fext, '.m2ts') <> 0) then
responseFailed
else
begin
if FileExists(path) then
begin
try
DeleteFile(path);
responseOK;
except
on e:Exception do
responseFailedException(e);
end;
end
else
responseFailed;
end;
finally
CoUninitialize;
end;
end
else
MakeSimpleRestResponse(AResponseInfo, 404, 'Unknown path');
end;
procedure TMBRoseEmbRestServerThread.ManageGet(AContext: TIdContext; ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo; elementCount: Integer);
var
o: TJSONObject;
begin // GET
if (elementCount = 1) and (CompareText(TRestServer.GetElement(ARequestInfo.Document, 1), 'version') = 0) then
begin
CoInitialize(nil);
try
AResponseInfo.ResponseNo := 200;
AResponseInfo.ContentType := 'application/json';
AResponseInfo.CharSet := 'utf-8';
o := TJSONObject.Create;
try
o.AddPair('version', TJSONString.Create(Trendware.IOUtils.FileVersion.GetProgramVersionInfo(3)));
o.AddPair('date', TJSONString.Create(Trendware.IOUtils.FileVersion.GetProgramVersionInfo(10)));
o.AddPair('copyright', TJSONString.Create(Trendware.IOUtils.FileVersion.GetProgramVersionInfo(5)));
AResponseInfo.ContentText := o.ToJSON;
finally
o.Free;
end;
finally
CoUninitialize;
end;
end
else…
Mvh
Sean
From: da...@googlegroups.com <da...@googlegroups.com> On Behalf Of Thomas Lassen
Sent: 16. juni 2025 12:34
To: DAPUG <da...@googlegroups.com>
Subject: [DAPUG] Nemmeste måde at opbygge et REST API i Delphi.
Hej Liste.
--
Hej Thomas
Jeg startede med REST API som ISAPI plugin til Microsoft IIS, men er nu gået 100% over på RAD Server (også på Microsoft IIS eller Apache), så får jeg en masse funktionalitet og sikkerhed med i løsningen.
Venlig hilsen
Brian Hansen
Brian Hansen Consulting ApS
Phone: (+45)30525308
https://brianhansenconsulting.dk
Mangler du en Whistleblower løsning. Læs om vores løsning på sibilum.com
--
Med venlig hilsen
Bjarne Rasmussen
Udvikler
Microcom A/S
Samuel Morses Vej 3 | 8200 Aarhus | Tlf. +45 66 15 46 00 | www.microcom.dk
Med venlig hilsen / Kind regards
Thomas Vedel
Software Developer
Du får ikke ofte mails fra br...@sibilum.com.
Få mere at vide om, hvorfor dette er vigtigt
|
Du kan se denne diskussion ved at gå til https://groups.google.com/d/msgid/dapug/BEUP281MB3413DD6D2B453E506C5EF4DD8073A%40BEUP281MB3413.DEUP281.PROD.OUTLOOK.COM.
Du kan se denne diskussion ved at gå til https://groups.google.com/d/msgid/dapug/CABUWFULng2yJEHPKC-DpFnQbb9Y-CNLPnchNVne%3Dof5yR%2BGzmA%40mail.gmail.com.
Du kan se denne diskussion ved at gå til https://groups.google.com/d/msgid/dapug/CABUWFULng2yJEHPKC-DpFnQbb9Y-CNLPnchNVne%3Dof5yR%2BGzmA%40mail.gmail.com.
Med venlig hilsen / Kind regards
Thomas Vedel
Software Developer