Net-Base Magasin

04.05.2026

REST-API eftermontering til eksisterende software: Modernisere grænseflader uden at bringe driften i fare

En REST-API gør eksisterende applikationer integrationsklare: til portaler, BI, mobile processer og partnerintegrationer. Artiklen viser, hvordan du planlægger, sikrer, drifter og udruller grænseflader til eksisterende software trinvis – uden 'Big Bang'.

04.05.2026

Mange virksomheder har fagligt afprøvet eksisterende software, der afbilder kerneprocesser pålideligt – men som kun i begrænset omfang kan integreres. Når et kundeportal, et nyt DMS/CRM, BI-analyser, EDI-partner eller mobile arbejdsgange skal tilknyttes, bliver det hurtigt klart: Uden rene grænseflader bliver enhver integration dyr, fejlbehæftet og vanskelig at vedligeholde. Her kommer emnet REST-API for eftermontering i bestående software ind: Den skaber kontrolleret, dokumenteret adgang til funktioner og data, uden at applikationen skal genudvikles fuldstændigt.

Denne artikel beskriver, hvordan du planlægger og indfører en REST-grænseflade (REST = „Representational State Transfer“, en udbredt stil for HTTP-baserede API’er) for eksisterende applikationer. Fokus er ikke på frameworks, men på drift, data, sikkerhed, versionering, migrationsveje og dagligdagen for IT-ledelse, administration og tekniske projektansvarlige.

Hvorfor en REST-API ofte er det mest fornuftige moderniseringstrin for bestående software

En eftermonteret API er ofte den mindste enhed af reel modernisering med mærkbar nytte. Den muliggør opbygning af nye brugerflader (web-portal, rapportering, mobile apps) uden straks at ændre den opbyggede forretningslogik i kernen. Samtidig reducerer I direkte databaseadgang fra tredjepartssystemer – et typisk stabilitets- og sikkerhedsrisikopunkt i legacy-landskaber.

Typiske grunde fra praksis:

  • Integration i stedet for isolerede løsninger: ERP, CRM, DMS, identity-providers, rapportering og partnergrænseflader har brug for en stabil kontrakt for data og funktioner.
  • Løs kobling mellem UI og forretningslogik: Når brugerfladen forældes, kan den udskiftes, mens logikken fortsat bruges via API’en.
  • Kontrolleret adgang: I stedet for „SQL udefra“ får I autentificering, roller/rettigheder (autorisering), logging og rate-limits samlet på ét sted.
  • Trinvis migration: Funktionsområder kan gøres API-kompatible ét for ét og senere moderniseres internt eller flyttes til services.

REST-API for bestående software: Vurdér udgangssituationen realistisk

Før en API designes, betaler det sig at lave en nøgtern kortlægning. „Bestående software“ betyder som regel: historisk vækst, mange specialtilfælde, lang levetid og ofte en tæt sammenhæng mellem UI, database og forretningslogik. En REST-API gør disse sammenhænge synlige – og det er positivt, hvis det håndteres struktureret.

Hvilke integrationsformer findes allerede?

I mange miljøer findes der allerede „grænseflader“, men ofte uformelle:

  • Direkte databaseadgang via rapporter, Excel-eksporter, scripts eller fremmede systemer
  • Filbaserede overførsler (CSV, XML, PDF-mapper, „drop-folder“)
  • FTP/SFTP-udveksling, e-mail-baserede processer
  • RPC/COM, SOAP, proprietære TCP/IP-protokoller eller message-queues

Disse mekanismer er ikke forkert i sig selv. Problematisk bliver det, når der mangler klare ansvarsområder, versionering og sikkerhedsgrænser. En REST-API erstatter ofte ikke alt øjeblikkeligt, men den skaber en bindende adgangsvej for nye krav.

Hvilke dele af forretningslogikken er „API-egnede“?

En almindelig fejlopfattelse: API = „bare give data ud“. I virksomhedssystemer drejer det sig næsten altid om transaktioner (faglige handlinger som „oprette ordre“, „bogføre varemodtagelse“, „tildele rettighed“). En robust API modellerer derfor først handlinger og først derefter rene dataforespørgsler.

Til prioritering har følgende vist sig effektive:

  • Stor integrationsvirkning: Funktioner, der involverer flere systemer (fx stamdata, statusændringer, dokumenttilknytninger).
  • Stort manuelt arbejde: Mediebrud og gentagne eksporter/importer.
  • Høj sikkerhedsrelevans: Områder, hvor „alle med DB-rettigheder“ i dag ser for meget.

Arkitekturvalg: API foran den bestående software eller inde i applikationen?

Ved eftermontering af en REST-grænseflade findes to grundmønstre, som også kan kombineres:

1) API som integreret komponent i bestandsapplikationen

Her kører en REST-server „tæt“ på forretningslogikken, ofte i samme deployment (fx som Windows- og Linux-services, Linux-daemon eller som modul i den eksisterende serverproces). Fordel: Direkte adgang til forretningsregler, mindre duplikation af logik. Risiko: Deployment og stabilitet i bestandssoftwaren skal kunne bære API-belastning og sikkerhedskrav.

2) API-facade som separat system (Facade/Adapter)

API’en drives som en selvstændig tjeneste, der kommunikerer med bestandssoftwaren via definerede kanaler (database med klare views/stored procedures, eksisterende grænseflader, messaging eller målrettede adapters). Fordel: Ren drift, uafhængig skalering og klare sikkerhedskontroller. Risiko: Mere arkitekturarbejde; grænsen mellem „facade“ og „forretningslogik“ må trækkes konsekvent for at undgå skygge-logik.

API-gateway: ja eller nej?

Et API-gateway er en forrestående komponent, som løser tværgående emner centralt: routing, autentificering, rate limiting, TLS-terminering, logging-korrelation. For en enkelt intern API er det ikke altid nødvendigt, men det kan være fornuftigt tidligt, hvis flere API’er er forventelige eller eksterne partnere skal tilgå. Vigtigt er, at et gateway ikke erstatter intern kvalitet: Versionering, fejladfærd og datakontrakter skal stadig være veldefinerede.

Data og kontrakter: Hvorfor API-datamodellen ikke bør følge DB-skemaet 1:1

En REST-API er en kontrakt. Brugere bygger forretningsprocesser, automationer og analyser ovenpå den. Derfor er det vigtigste designmål stabilitet – ikke „gør alt tilgængeligt“. En hyppig fejl er at udstille databaserne direkte. Det binder forbrugere til interne strukturer og gør enhver DB-ændring til et integritetsbrud.

DTO’er, ressourcer og aggregationer: indfør forståeligt

I API’er anvendes ofte DTO’er („Data Transfer Objects“, altså overførte datastrukturer). For IT-drift og projektansvarlige er kernebudskabet: API-objekter er bevidst afgrænsede. De kan samle flere tabeller, omdøbe felter, skjule interne nøgler og kun levere det, som processen behøver.

Gode praksisser i bestående miljøer:

  • Indfør eksterne IDs, som forbliver stabile (i stedet for at eksponere interne tekniske nøgler).
  • Navngiv felter semantisk (fagligt, ikke tabel-specifikt).
  • Tilbyd aggregerede endpoints, der dækker typiske UI- eller procesforespørgsler, så ikke 10 kald er nødvendige.

Læsning vs. skrivning: Træk transaktionsgrænser tydeligt

For forespørgsler (GET) kan I ofte hurtigt levere værdi, fx til portaler eller rapportering. Skrivoperationer (POST/PUT/PATCH/DELETE) er mere krævende, fordi validering, rettigheder, sideeffekter og transaktionssikkerhed spiller ind. Planlæg derfor:

  • Først læse-endpoints for de vigtigste views
  • Derefter udvalgte skrivehandlinger som klare forretningskommandoer („sæt status“, „tilføj post“) i stedet for „gem datarække“

Sikkerhed og adgang: Autentificering, autorisation og logging

En eftermonteret API er en ny adgangskanal. Trusselsmodellen og ansvarsfordelingen ændres. Tre områder skal planlægges fra starten: identitet, rettigheder og sporbarhed.

Autentificering: Hvem er anroperen?

I virksomhedsmiljøer er det almindeligt at knytte API’en til et centralt identity-system. Hyppige byggesten er OAuth 2.0 (delegering af adgang via tokens) og OpenID Connect (identitetslag ovenpå). Også SAML 2.0 er udbredt, især til single sign-on i virksomhedsportaler. Vigtigt: API’en bør kunne validere tokens og undgå at opbygge et eget brugernavn/adgangskode-silo, hvis en identity-provider findes.

Autorisation: Hvad må anroperen gøre?

Autorisation omfatter kontrol af roller, rettigheder og tenant-tilknytning. Typiske krav i bestående software:

  • Mandantadskillelse (Tenant-Isolation): Data og processer skal være stringent adskilt.
  • Rollebaserede rettigheder (RBAC): fx læse, bogføre, frigive, administrere.
  • Objektbaserede regler: „Må kun se egne sager“ eller „kun omkostningssted X“.

En robust API håndhæver disse regler server-side – uafhængigt af om anroperen er en portal, et script eller en ekstern partner.

Audit-logging: Hvad skete hvornår?

Især for skriveoperationer er audit-logging (revisionssikre eller mindst sporbare ændringsprotokoller) centralt. Minimum bør indfanges: tidspunkt, anropende identitet, endpoint, relevant objekt-ID, resultat (succes/fejl) og en korrelations-ID til sporing på tværs af systemer. Det er ikke et „nice-to-have“: Det reducerer supporttid og er i mange brancher vigtigt for compliance og interne kontroller.

Drift og pålidelighed: Hvad driftsteamet bør sikre tidligt

API’er behandles i dagligdagen som infrastruktur. Hvis de mangler eller er langsomme, stopper processer. Derfor bør drift og observability (målinger via metrics/logs/traces) ikke udskydes til sidst.

Monitoring, metrics og fornuftige alarmer

For stabil drift er „kører“ og „svar kommer“ ikke nok. Brugbare minimums-metrics:

  • Latency pr. endpoint (fx p95/p99) for at opdage outliers
  • Fejlrater (HTTP 4xx/5xx), opdelt per endpoint
  • Gennemstrømning (requests per minut), for at forstå belastningsmønstre
  • DB-/backend-afhængigheder: ventetider, timeouts, connection-pool-udnyttelse

Alarmer bør ikke reagere på enkelte peaks, men på trends og vedvarende forstyrrelser. Det forebygger „alarmtræthed“ hos vagtberedskabet.

Rate limiting og beskyttelse mod forkert adfærd

Rate limiting begrænser forespørgsler per tidsenhed for at beskytte bestandssoftwaren mod overbelastning – også fra velmente, men ineffektive klienter. Supplerende foranstaltninger er: request-timeouts, maksimal payload-størrelse og klare fejlbeskeder, så klienter kan rette deres adfærd.

Fejladfærd og idempotens

Idempotens betyder: En request kan sendes flere gange uden uønskede sideeffekter (fx dobbelte bogføringer). Det er vigtigt, fordi netværk og klienter kan gensende. For drift og beslutningstagere er effekten klar: Færre dubletter, færre manuelle korrektioner, mere robuste processer. Planlæg for kritiske skriveoperationer mekanismer som Idempotency-Keys eller entydige forretningsreferencer.

Deployment uden driftsafbrydelse

Når en API er i produktion, udgør hver ændring en potentiel risiko. Velafprøvede principper:

  • Backward compatibility: At tilføje felter er som regel uproblematisk; at fjerne felter eller ændre betydning er kritisk.
  • Blue/Green eller Rolling Deployments: To versioner parallelt eller gradvis udskiftning for at undgå nedetid.
  • Adskilte databasemigrationer: Kør schema-ændringer, så gamle og nye API-versioner kan sameksistere i en periode.

Versionering og lifecycle: Hvordan I holder ændringer under kontrol

API-versionering er ikke et teoretisk arkitekturtema, men et værktøj til at muliggøre videreudvikling uden kontinuerlig krise. I bestående softwaremiljøer har I typisk flere forbrugere: internt portal, rapportering, integrationspartnere, automationer, måske eksterne kunder. At opgradere alle samtidig er sjældent realistisk.

Hvilken versioneringsstrategi er praktisk?

Udbredte tilgange er versioner i URL’en (fx /v1/…) eller via headers. For organisation og drift er URL-versionering ofte enklere, fordi den er synlig i logs, gateways og monitoring. Mindre vigtigt er „hvordan“ og vigtigere er konsekvensen: En version har en defineret supportperiode, og breaking changes indføres kontrolleret.

Deprecation-policy og kommunikation

Definér tidligt en deprecationspolitik: Hvor længe er v1 tilgængelig, når v2 lanceres? Hvordan informeres forbrugere? Selv internt er dette afgørende, ellers lever gamle versioner videre i det uendelige og belaster vedligehold og sikkerhed.

Modernisér dataadgang uden at omskrive alt

Ved eftermontering af en REST-API støder teams ofte på teknisk gæld i dataadgang: blandede SQL-stilarter, manglende transaktionsgrænser, direkte tabeladgang fra mange steder. Målet behøver ikke være „perfektion“, men kapsling: API’en skal tilbyde en defineret vej til datahold.

Service-lag og klare ansvarsområder

Et service-lag samler forretningslogik og regler for API-kald: validering, rettigheder, transaktioner, sideeffekter. Det reducerer risikoen for, at hvert endpoint „laver sin egen løsning“. For drift og vedligehold betyder det mere konsistente fejlscenarier og færre sideeffekter ved ændringer.

Hvis databasen selv er legacy

Mange bestående applikationer er bundet til ældre databasesystemer eller drivere. Så er API’en også et værktøj til gradvist at stabilisere dataadgangen: nye drivere, klare connection-pools, konsistent tegnsæt (fx Unicode), ordentlig håndtering af dato-/tidsværdier. Nøglepunktet: Mål og stabilisér først, og ombyg derefter. En API, der „af og til“ leverer forkerte tidsstempler, bliver hurtigt et tillidsproblem.

Typiske faldgruber ved eftermontering af API – og hvordan I undgår dem

Mange problemer stammer ikke fra REST som sådan, men fra uklare mål og manglende driftsplanlægning. Følgende punkter er særligt udbredte i legacy-integrationer:

1) „Vi eksponerer blot tabellerne“

Det fører til tæt kobling, ukontrolleret dataudstrømning og vanskelig versionering. Bedre: faglige ressourcer og handlinger, DTO’er og stabile eksterne IDs.

2) Uklare ansvarsområder for datakvalitet

Hvis flere systemer skriver via API’en, skal det være klart, hvor den „single source of truth“ er. Ellers opstår konflikter, dubletter eller modstridende tilstande. Definér per dataområde: Hvem må oprette, hvem må ændre, hvem må kun læse?

3) Manglende belastnings- og timeout-strategi

En API kan skabe ny belastning: Portaler poller status, BI trækker store datamængder, partnere skaber peaks. Uden timeouts, limits og fornuftige endpoints bliver database og bestandslogik unødigt presset. Planlæg belastningsprofiler, før den første eksterne forbruger går live.

4) Sikkerhed først „efter proof of concept“

Især i API-kontekst er det dyrere at føje autentificering, roller og audit til senere end at starte korrekt. Selv hvis I i første fase kun kører internt: Planlæg security, så API’en senere kan eksponeres eksternt uden arkitekturmæssig omvending.

En pragmatisk projektplan i seks trin

For at eftermontering ikke ender som et fastlåst koncept, hjælper et forløb, der leverer hurtige gevinster og samtidig beskytter driften:

  1. Klare målbilleder og forbrugere: Portal, rapportering, partnere, automationer. Hvilke processer prioriteres?
  2. Skær domæner: Stamdata, forløb, dokumenter, rettigheder. Ingen „én stor API“ uden struktur.
  3. Fastlæg sikkerhedsbasis: Identity-tilslutning, roller, tenant-logik, audit-events, TLS.
  4. Lever read-first: De vigtigste læse-endpoints med stabile DTO’er, paging/filter og forståelige fejl.
  5. Skrivoperationer som kommandoer: Få, klare transaktioner med idempotens og solid validering.
  6. Standardisér drift: Monitoring, log-korrelation, deployments-strategi, versionering og deprecation.

Så opstår en API, der reelt kan anvendes, i stedet for at forblive en teknisk „sidebane“.

Hvordan en API forbereder moderniseringsvejen

Eftermontering af en REST-API er sjældent et slutmål. Ofte er det startpunktet for at føre bestandssoftwaren trinvis ind i en mere robust arkitektur: adskil moduler, afløft forældede dataadgange, etabler nye brugerflader, og udlæg baggrundsprocesser som services. Den afgørende fordel: API’en skaber en stabil integrationskontrakt, som videre tiltag kan orientere sig efter.

Når interne refaktoreringer eller migrationer senere gennemføres, kan forbrugere fortsat arbejde gennem API’en – så længe kontrakten forbliver stabil. Det reducerer projektrisiko og forhindrer „big bang“-omlægninger.

Konklusion: En eftermonteret REST-API er et driftsprojekt, ikke kun et udviklingsfeature

En REST-grænseflade til bestandssoftware er succesfuld, når den afbilder faglige processer præcist, opfylder sikkerhedskrav og er håndterbar i drift. Den største gevinst opstår, når API’en ikke ses som et eksportlag, men som en klar kontrakt mellem systemer: versioneret, dokumenteret, overvåget og med entydige ansvarsfordelinger for data og rettigheder.

Hvis du vil eftermontere en REST-API for bestandssoftware og samtidig føre arkitektur, sikkerhed og drift sammen fra start, tal med os om din udgangssituation og en realistisk indføringsplan:

I det faglige miljø spiller også autentificering og autorisation en vigtig rolle, hvis integrationer, dataflow og videreudvikling skal spille sammen på en kontrolleret måde.

Diskutér projekt eller moderniseringsinitiativ med Net-Base.

Del indlæg

Del dette indlæg direkte

LinkedIn, X, XING, Facebook, WhatsApp og e-mail er straks tilgængelige. Til Instagram forbereder vi link og kort tekst med det samme.

E-mail

Instagram åbner i en ny fane. Linket og kortteksten kopieres på forhånd til udklipsholderen.