Net-Base Magasin

13.04.2026

Utveckla REST-servrar med Delphi: Arkitektur, säkerhet och drift i praktiken

Utveckla REST-servrar med Delphi: placera WebBroker, Horse, RAD Server och DataSnap i ett praktiskt sammanhang. Därtill API-design, autentisering, FireDAC-dataåtkomst, versionshantering, loggning, övervakning och driftsättning för Windows och Linux.

13.04.2026

Från magasinets tema till projektpraxis

Passande tjänste- och tekniksidor för inlägget

Video-Botschaft

Utveckla REST-servrar med Delphi: Arkitektur, säkerhet och drift i praktiken

Kurz erklärt, warum bei Delphi-REST-Servern nicht der erste funktionierende Endpunkt zählt, sondern Architektur, Security und Betrieb: konsistente Fehler, Authentifizierung, Logging/Monitoring und sauberes Deployment für Windows und Linux.

Video mit KI erstellt

Transkript anzeigen

Hallo, ich bin Mark. Der erste funktionierende REST-Endpunkt ist oft der Anfang der Probleme, nicht das Ende.

Im Beitrag „REST-Server mit Delphi entwickeln: Architektur, Sicherheit und Betrieb in der Praxis“ geht es genau darum. In Unternehmen scheitern APIs selten an Delphi oder am Framework.

Sie scheitern an Betrieb: uneinheitliche Fehler, fehlende Zeitlimits, unklare Zuständigkeiten. Und an Sicherheit: Authentifizierung, also wer sich ausweist, und Autorisierung, also was jemand darf.

Wichtig ist eine klare Trennung: vorne HTTP und Validierung, in der Mitte die Fachlogik, hinten Datenzugriff. Dazu gehören Logging und Monitoring, damit Sie Störungen nachvollziehen, bevor Nutzer Tickets schreiben.

Wenn Sie dazu Fragen haben, klären wir gern die typischen Stolperstellen aus der Praxis.

Den som vill utveckla en REST-Server med Delphi gör det sällan som ett självändamål i företag. Vanligtvis handlar det om robusta gränssnitt mellan befintliga system, portaler, tjänster och databaser – med tydliga krav på drift, säkerhet och underhållbarhet. Avgörande är inte hur snabbt en första endpoint svarar, utan om tjänsten förblir stabil i vardagen: spårbara felbilder, kontrollerade dataåtkomster, korrekt autentisering, tydliga ansvarsgränser i arkitekturen och en distribution som passar Windows- och Linux-miljöer.

Delphi är i många organisationer ett pragmatiskt val: befintlig verksamhetslogik kan återanvändas, prestandan är ofta tillräcklig och det finns flera vägar att implementera HTTP-baserade API:er. I praktiken skiljer sig alternativen mindre i „kan REST“, och mer i transparens och drift: Hur konsekvent kan loggning, timeouts, reverse-proxy-regler, versionering, OpenAPI-dokumentation och säkerhetsmekanismer införas?

Detta inlägg placerar de viktigaste Delphi-ansatserna och visar vad IT-ledning, administratörer och tekniska projektansvariga bör uppmärksamma: från API-design över security och BDE-avlösning med native-anslutning-dataåtkomst till observability (loggar, metriker, tracing) och distribution som Windows- eller Windows- och Linux-services. Målet är en robust grund för integrationer mot ERP, DMS, CRM eller kundportaler – utan att ramverksinterna detaljer blir i fokus.

När en REST-Server i Delphi är särskilt motiverad

Ett Delphi-REST-backend är ofta motiverat när Delphi redan är etablerat i företaget eller när verksamhetslogik och dataåtkomst från befintliga applikationer ska återanvändas. Typiska B2B-situationer:

  • Göra befintlig programvara API-kompatibel: En VCL-applikation eller en klient-server-kärna får ett REST-lager så att portaler, externa system eller interna tjänster kan nå funktionaliteten på ett standardiserat sätt.
  • Integration och avkoppling: Flera konsumenter (desktop, webbportal, batch, partner) ska använda samma affärsprocesser utan direkta databasåtkomster eller filinterface.
  • Modernisering i etapper: Inför först en stabil API, och modernisera sedan UI, moduler eller databas stegvis. API:n blir en kontrollerad gräns och minskar sidoeffekter.
  • Drift och säkerhet: HTTP-API:er är lätta att drifta bakom reverse proxies, centralt autentisera och integrera i monitoring-stacks.

Viktigt är förväntningsbilden: REST är ett integrationsgränssnitt, inte en ersättning för verksamhetsmässig konsistens. Den som startar utan klart domänmodell, definierade transaktionsgränser eller tydligt dataansvar bygger snabbt en API som är tillgänglig men dyr i underhåll och support på sikt.

REST-Serverar med Delphi: översikt över alternativ

Delphi erbjuder flera vägar till en REST-tjänst. För beslutsfattare är det mindre fråga om vad som är „modernt“ och mer: Hur väl passar det till teamstruktur, driftsmodell, livslängd och efterlevnadskrav?

Delphi WebBroker: slankt, transparent, väl kontrollerbart

WebBroker är ett etablerat Delphi-ramverk för HTTP-applikationer. Det ligger nära protokollet (request/response), vilket gör det lätt att följa och attraktivt i B2B-scenarier där kontrollerad felhantering, korrekt header-hantering och en överskådlig stack är viktig. WebBroker kan vanligen drivas väl bakom en reverse proxy som terminierar TLS och tillämpar centrala säkerhetsregler.

Konsekvens för praktiken: Många bekvämlighetsfunktioner (routing-konventioner, middleware-kedjor, OpenAPI-underhåll) måste kompletteras strukturerat. Det är inte en nackdel om arkitekturstandarder ändå prioriteras.

Delphi Horse: routing och middleware för tydliga API-standarder

Delphi Horse är lättviktigt och satsar på tydlig routing plus ett middleware-principe. Middleware avser här återanvändbara bearbetningssteg runt endpointen, exempelvis autentisering, loggning, rate limits eller request-validering. För många team är detta ett produktivt tillvägagångssätt eftersom standarder kan genomdrivas centralt.

Viktigt för drift: Definiera tidigt ett enhetligt felformat, timeouts, maximal request-storlek och en loggningsstandard. Utan sådana riktlinjer förblir systemet visserligen funktionellt men blir onödigt krångligt vid support och utbyggnad.

RAD Server: plattformsansats med integrerade byggstenar

RAD Server (tidigare EMS) är mer en plattform med inbyggda funktioner som användarhantering och andra komponenter. Det kan passa där flera klienter behöver ett gemensamt backend och plattformsfunktioner används aktivt. För rena integrations-API:er är det dock inte per automatik bästa valet; här väger ofta transparens, låga beroenden och en slank driftsmodell tyngre.

DataSnap: bedöm befintliga installationer realistiskt

DataSnap finns historiskt i många Delphi-landskap och kan exponera HTTP/REST-liknande endpoints. För nya initiativ bör man dock pröva om det passar den planerade API-stilen, autentisering (t.ex. JWT), OpenAPI/Swagger och moderna driftkrav. Ett pragmatiskt förhållningssätt är ofta: återanvänd befintlig logik, men exponera den via ett klart definierat REST-API som tvingar fram standarder för security, loggning och versionering.

Arkitektur som bär i drift och underhåll

Ett vanligt misstag i REST-projekt är „handlern gör allt“: HTTP-parametrar läses in, SQL byggs direkt, affärsregler implementeras och loggning läggs till vid sidan om. Det kan kännas snabbt i början men leder till svårt testbar kod och instabila förändringar.

I företagsmiljöer är en tydlig lagerindelning beprövad. En vanlig, pragmatisk struktur är en Layer-3-arkitektur (tre lager) som separerar ansvar:

Transportlager: HTTP, auth, validering, svarformat

Här tas requesten emot, grundläggande validering utförs och ett konsekvent svarformat skapas. I detta lager hör också autentisering och auktorisation (vem får göra vad) samt tekniska regler som request-limits, CORS eller tilldelning av correlation-IDs (unika ID per förfrågan för spårbarhet).

Domänlager: affärsuse-cases istället för endpoint-logik

Domänen kapslar in affärsflöden som „skapande av order“, „ändra status“ eller „koppla dokument“. Avgörande: denna logik bör vara så oberoende av HTTP-ramverket som möjligt. Då kan samma domän även användas av ett Windows- och Linux-service, en Linux-daemon eller en batchprocess utan att logik dupliceras.

Persistens och integration: FireDAC, databas, ERP/DMS/SMTP

Detta lager samlar åtkomst till databaser och externa system. För Delphi är BDE-Ablosung mit nativer Anbindung den vanliga dataåtkomststacken för att koppla PostgreSQL, SQL Server, MariaDB/MySQL eller Firebird på ett rent sätt. Viktigt är inte bara att „använda FireDAC“, utan också bindande regler: connection-hantering, transaktionsgränser, timeouts, parameterbindning, översättning av tekniska fel till API-felkoder och enhetliga retry-strategier där det är rimligt ur domänsynpunkt.

API-design: stabil över år, inte bara till go-live

I B2B-miljöer är en API en långsiktigt underhållen gränsyta. Det centrala begreppet är kompatibilitet: Konsumenter förlitar sig på fält, statuskoder och semantik. Ju tydligare dessa regler definieras, desto mindre arbete uppstår vid integration, support och releaser.

Resurser och vägar: konsekvens före kreativitet

Stabila API:er är typiskt resursorienterade: „/customers“, „/orders/123“, „/orders/123/items“. Processaktioner kan modelleras som sub-resurser eller väl motiverade action-endpoints, till exempel „/orders/123/cancel“ när ett rent CRUD-mönster inte är lämpligt. Det avgörande är en enhetlig konvention som dokumenteras och används i hela teamet.

HTTP-metoder och statuskoder: tydliga signaler till konsumenter

En API blir lättintegrerad om den använder förväntad HTTP-semantik: GET för läsningar, POST för skapande, PUT/PATCH för ändringar, DELETE för borttagningar. Lika viktigt är ett konsekvent felbeteende. För driften är ett standardiserat felobjekt användbart med:

  • HTTP-status (t.ex. 400, 401, 403, 404, 409, 422, 500)
  • stabil felkod (maskinläsbar, dokumenterad)
  • correlation-ID (för snabb koppling i loggar)
  • valfria detaljer (t.ex. fälthatal vid validering)

Ett vanligt fallgropsscenario är att returnera „200 OK“ med ett felmeddelande i kroppen. Det försvårar integrationer och leder till felbenägen klientlogik.

Versionering och kompatibel utökning

Versionering är en process- och kommunikationsfråga, inte bara teknik. Vanliga angreppssätt är URL-versionering (t.ex. „/api/v1“) eller header-baserad versionering. I många företag är dock viktigaste principen: kompatibel utökning. Att lägga till nya fält är oftast ofarligt. Att ta bort eller omdefiniera fält kräver en ny version och ett tydligt kommunicerat migrationsfönster. Det minskar integrationsstörningar och gör releaser planbara.

Säkerhet: autentisering, auktorisation, angreppsytor

En REST-tjänst är en potentiell ingångspunkt. Många säkerhetsproblem uppstår inte avsaknad av kryptering, utan detaljfel: för vida behörigheter, för långa token-livslängder, oprovade admin-endpoints, okontrollerade CORS-regler eller loggar med känsliga data.

TLS och reverse proxy: tydliga ansvar i nätverket

I typiska uppsättningar terminerar TLS vid reverse proxy (t.ex. Nginx, Apache eller Microsoft IIS som reverse proxy). Delphi-tjänsten körs internt över HTTP och är endast nåbar från det interna nätet. Viktigt är rena regler för „X-Forwarded-For“ och „X-Forwarded-Proto“ så att klient-IP och protokoll tolkas korrekt. Denna information är relevant för audit, rate limiting och felsökning.

JWT, API-Keys och SSO: vad som passar i praktiken

För system-till-system-integrationer är API-Keys eller client-credentials-mekanismer vanliga. För användaråtkomst i företagskontext är JWT (JSON Web Token) i kombination med en central identity provider (t.ex. OIDC) ofta praktiskt. I SSO-landskap kan även SAML 2.0 vara relevant (en standard för single sign-on, oftast mellan portal/gateway och identity provider).

Oavsett metod bör ni definiera:

  • nyckel- och certifikatrotering (hur förnyas signaturer?)
  • roller/scopes (vilka behörigheter gäller för vilka endpoints?)
  • multitenancy (hur säkerställs korrekt tenant-assignering?)
  • audit-logging (vem utförde vilken affärshändelse och när?)

Input-validering, CORS och rate limiting

Input-validering bör ske i flera steg: syntaktiskt (datatyper, JSON-struktur), affärsmässigt (värdeintervall, statusövergångar) och säkerhetsmässigt (filnamn, sökvägar, headers). För webbläsarklienter blir CORS viktigt (regler vilka origins och headers som tillåts). CORS bör konfigureras restriktivt. Rate limiting skyddar mot missbruk och belastningstoppar; det implementeras ofta i reverse proxy och kompletteras med serverbaserade begränsningar (maximal body-storlek, timeouts, begränsad parallellism).

FireDAC och databasåtkomst: stabilitet skapas genom regler

I REST-backends är databasåtkomst ofta den dominerande faktorn för latens och stabilitet. FireDAC erbjuder de tekniska möjligheterna, men driftssäkerhet skapas genom styrande riktlinjer.

Connection-hantering och samtidighet

Ett klassiskt fel är en globalt delad databasanslutning som används parallellt av flera requests. I en REST-server med parallell bearbetning (threads/worker) måste det vara klart vilka objekt som är trådsäkra och vilka som inte är det. I praktiken innebär det: hantera connection- och query-objekt per request eller per unit-of-work, eller använd kontrollerad pooling beroende på servermodell. Det minskar deadlocks, sporadiska fel och svårreproducerade problem.

Transaktioner längs use-cases

Transaktioner hör hemma i domänen: Ett use-case bestämmer vad som ska vara atomärt. Ofta är „en request = en transaktion“ rimligt, men inte alltid. Read-only-endpoints behöver ofta ingen explicit transaktion, medan skrivflöden kan kräva konsistenta ändringar i flera tabeller. Vid externa integrationer (ERP, DMS, webhooks) är distribuerade transaktioner vanligtvis orealistiska; där hjälper tydliga sekvenser och kompensationslogik (hur återställs ett delvis lyckat resultat?).

Timeouts, backpressure och kontrollerat fel

Utan timeouts byggs köer av requests, trådar och DB-anslutningar upp. Sätt därför timeouts både på HTTP- och DB-nivå. Kompletterande är backpressure: begränsa parallellitet och kölängder så att systemet under belastning kan svara kontrollerat med 503 (Service Unavailable) istället för att falla helt på grund av resursbrist. För drift är en snabb, tydlig felbild bättre än minuter av hängning.

Payloads, DTOs och långsiktig kompatibilitet

JSON är standard, men interoperabilitet uppnås genom detaljer: datum/tid-format, tidszoner, null-värden, decimalrepresentation, fältnamn och encoding. Fastställ en standard (t.ex. ISO-8601 i UTC) och håll den konsekvent.

DTOs istället för att exponera databasstrukturer

DTOs (Data Transfer Objects) är API-datamodeller optimerade för utbyte. De bör inte spegla databastabeller rakt av. På så vis undviker ni att interna schemaändringar omedelbart blir API-brott. Dessutom kan ni styra vilka interna fält som inte ska exponeras (t.ex. flags, audit-kolumner) och genomföra intern refaktorering utan att äventyra integrationer.

Idempotens och retries

I företagsnätverk är timeouts och retries normala. Definiera vilka operationer som är idempotenta (upprepad körning ger samma resultat) och hur dubbla POST-förfrågningar kan förhindras, exempelvis med en idempotency-key för vissa skrivoperationer. Det minskar dubbletter, inkonsistenta tillstånd och supportärenden.

Dokumentation och tester: OpenAPI som gemensam arbetsbas

En API används i B2B sällan av ett enda team. OpenAPI (Swagger) är ett praktiskt gemensamt språk eftersom specifikationer kan automatiseras: klientgenerering, mocking, contract-tester och diffning mellan versioner. Även om Delphi-stacken inte genererar allt automatiskt, är en välhållen specifikation ett centralt artefakt.

Pragmatisk testtäckning som sänker driftskostnader

En lämplig teststruktur för REST-tjänster består oftast av tre nivåer:

  • Unit-tester för domänlogik (utan HTTP, utan databas)
  • Integrationstester för dataåtkomst och transaktionsbeteende (med testdatabas och reproducerbar seed-data)
  • API-/contract-tester mot en körande tjänst (statuskoder, auth, feilformat, versionering)

För administratörer och driftteam är det viktigt att tester är reproducerbara och inte beroende av utvecklarmiljöer. Ju närmare testmiljön ligger det slutliga deployment-scenariot, desto mindre risk för överraskningar efter uppdateringar.

Distribution och drift: Windows-service, Linux-service, container

En REST-server anses i praktiken först „klar“ när den kan drivas stabilt: start/stopp-beteende, log-rotation, uppdateringar, rättigheter, portöppningar, certifikat, övervakning och tydliga rollback-möjligheter.

Windows- och Linux-services: beprövade driftsmodeller

I Windows-miljöer är drift som Windows- und Linux-Services ofta naturligt eftersom mekanismer för starttyp, återhämtning, rättigheter och övervakning finns. I Linux används ofta en systemd-tjänst (systemd är standard service-manager) som kontrollerar restart-policys, logganslutning och startordningar. För båda världarna gäller: en reverse proxy framför förenklar TLS, header-policys, rate limits och routing.

Container: reproducerbart, men endast med tydlig state-separation

Container kan förenkla distributioner och snabba upp rollout. Förutsättningen är en tydlig separation av state: databas externt, filer i volymer, secrets via secret-management. Utan sådan disciplin uppstår svårt underhållna blandade tillstånd som visar sig vid driftstörningar eller restore-scenarier.

Konfiguration: spårbar, miljöseparerad, inga secrets i repo

Ett konsekvent konfigurationsmönster hjälper: separata inställningar för dev/test/prod, central definition av log-levels, DB-anslutningsdata, timeouts, tillåtna origins och token-nycklar. Känslig information ska inte ligga i källkodsförrådet. För audit och drift är det viktigt att konfigurationsändringar är spårbara och kan rullas ut kontrollerat.

Observability: loggar, metriker och tracing som driftsförutsättning

När integrationer stannar behöver driften svar: Vilka endpoints påverkas, sedan när, med vilken felränta och vilken beroende är långsam? Utan observability blir varje incident manuell detektivarbete.

Strukturerad loggning och correlation-IDs

Strukturerad loggning (key/value eller JSON) möjliggör analys via verktyg och förenklar filtrering efter endpoint, tenant, felkod eller correlation-ID. Varje förfrågan bör få en correlation-ID som också returneras i response-headern. Känsliga uppgifter som lösenord, tokens eller personuppgifter bör inte loggas; här hjälper maskning, hashing eller riktade debug-logs i isolerade miljöer.

Metriker för kapacitet och stabilitet

Praktiskt användbara metriker är request-rate, latenser (t.ex. p95/p99), felräntor per endpoint, DB-tider, antal aktiva workers/threads, connection-belastning och kölängder. Dessa värden ligger till grund för kapacitetsplanering och hjälper att upptäcka långsamma problem (saknade index, nya beroenden, ogynnsamma frågevägar).

Moderniseringsväg: REST som stabil gräns för äldre Delphi-system

I många Delphi-landskap är REST-API:n inte slutmålet utan en stabiliserande och moderniserande komponent. Ett beprövat, riskbegränsat förfarande är styckvis:

  1. Prioritera use-cases: Vilka funktioner måste vara externt tillgängliga (stamdata, statusändringar, dokumentåtkomst, godkännanden)?
  2. Fastställ API-standarder: Auth, felformat, versionering, loggning, timeouts, rate limits, OpenAPI.
  3. Extrahera domänen: Strukturera affärslogik så att den inte är bunden till UI eller enskilda endpoints.
  4. Konsolidera dataåtkomst: FireDAC-regler, transaktionskoncept, prestanda-baslinjer, query-policies.
  5. Fasa om konsumenter: Desktop, portaler och andra tjänster använder API:n; direkta DB-åtkomster minskas.

Resultatet blir ett system som kan utvecklas etappvis: moduler kan förnyas utan att ändringar sprider sig okontrollerat till alla klienter.

Typiska fallgropar i B2B-REST-projekt

Några återkommande felbilder kan undvikas med tydliga regler:

  • Oenhetliga felformat: Support och integration kompliceras i onödan. Lösning: standardiserat felobjekt med stabila felkoder.
  • Säkerhet som efterhandskonstruktion: Roller, multitenancy och audit läggs „senare“ till. Lösning: planera som grundstruktur, inte per endpoint improvisera.
  • Inga begränsningar: saknade body-limits, timeouts och parallellitetsgränser leder till fel vid belastning. Lösning: reverse proxy plus serverbaserad backpressure.
  • Databasen för tätt kopplad till API: varje schemaändring bryter konsumenter. Lösning: DTOs och tydligt definierade use-cases.
  • För lite observability: problem är inte mätbara. Lösning: correlation-IDs, strukturerade loggar, kärnmetrik.

Slutsats: REST med Delphi innebär ansvar för gränssnitt och drift

Att utveckla en REST-server med Delphi blir hållbart i företag när arkitektur och drift planeras tillsammans från början. Valet av ramverk (WebBroker, Horse, RAD Server eller en migrationsväg från DataSnap) är relevant men inte den största hävstången. Skillnaden görs av tydliga standarder för API-design, autentisering, felhantering, versionering, FireDAC-dataåtkomst, timeouts samt observability och distribution som Windows- eller Windows- und Linux-Services. Då blir en gränsyta en stabil integrationsbyggsten som möjliggör modernisering i stället för att blockera den.

I den fackliga kontexten spelar också Delphi REST-API och Delphi REST-API und REST-Server en viktig roll när integrationer, dataflöden och vidareutveckling måste samverka utan friktion.

Projekt eller moderniseringsinitiativ diskutera med Net-Base.

Nästa steg

När ett ämne blir ett verkligt projekt bör arkitektur, befintliga system och drift behandlas gemensamt redan i ett tidigt skede.

Vi stöder inte bara vid enstaka frågor, utan även när kodsfragment, legacy-frågor eller portalidéer ska utvecklas till ett robust företagsprojekt.

  • Nuläge, målbild och tekniska risker bedöms tillsammans.
  • REST, dataåtkomst, portaler och utrullning skjuts inte upp som sena följder.
  • Ni ser tidigt vilken väg som är ekonomiskt och driftsmässigt bärkraftig.

Dela inlägg

Dela det här inlägget direkt

LinkedIn, X, XING, Facebook, WhatsApp och e‑post är omedelbart tillgängliga. För Instagram förbereder vi länken och en kort text direkt.

E-post

Instagram öppnas i en ny flik. Länken och korttexten kopieras till urklipp först.