12/10/2025
I dagens digitale landskab er mobile applikationer ikke længere isolerede økosystemer; de er portaler til en verden af data og tjenester. For at levere rige, interaktive og aktuelle oplevelser skal mobilapps ofte integreres med forskellige eksterne datakilder. SAP Mobile Development Kit (MDK) tilbyder en robust og strømlinet tilgang til at bygge multi-kanal applikationer, men hvordan får man disse apps til at tale med systemer, der ikke er baseret på OData, som mange af SAP's egne tjenester er? Svaret ligger i at udnytte REST API'er, en universel standard for webkommunikation. Denne artikel vil guide dig gennem processen med at forbruge REST API'er i dine MDK-apps, fra opsætning af destinationer til binding af data til UI-kontroller, og give dig den viden, du skal bruge for at bygge fuldt funktionelle, datadrevne mobile løsninger.

Lad os starte med at forstå de grundlæggende byggesten.
- Hvad er SAP Mobile Development Kit (MDK) og REST API'er?
- Hvorfor Forbruge REST API'er i MDK-Apps?
- Forudsætninger og Opsætning
- Trin-for-Trin Vejledning til Forbrug af REST API'er i MDK
- Avancerede Overvejelser og Bedste Praksis
- Sammenligning: REST vs. OData i MDK
- Ofte Stillede Spørgsmål (FAQ)
- Kan jeg bruge REST API'er til at skrive data tilbage (POST, PUT, DELETE)?
- Hvad hvis min REST API returnerer XML i stedet for JSON?
- Er der begrænsninger på, hvilke REST API'er jeg kan bruge?
- Hvad med sikkerhed, når jeg forbruger REST API'er?
- Kan MDK håndtere REST API'er med komplekse indlejrede JSON-strukturer?
- Konklusion
Hvad er SAP Mobile Development Kit (MDK) og REST API'er?
SAP Mobile Development Kit (MDK) er en low-code udviklingsplatform, der giver udviklere mulighed for at bygge native mobile og webapplikationer til iOS, Android og browsere fra en enkelt kodebase. Den er bygget oven på SAP Business Technology Platform (BTP) og fokuserer på hurtig udvikling og nem implementering. MDK forenkler komplekse mobiludviklingsopgaver ved at levere et metadata-drevet framework, hvor du definerer din applikationsstruktur, logik og UI-elementer i JSON-lignende filer.
En REST API (Representational State Transfer Application Programming Interface) er en arkitekturstil for distribueret hypermediasystemer. I praksis er det en standardiseret måde for to computersystemer at kommunikere over internettet. REST API'er bruger standard HTTP-metoder (GET, POST, PUT, DELETE) til at udføre handlinger på ressourcer, og de returnerer typisk data i et letvægtsformat som JSON (JavaScript Object Notation) eller XML. JSON er blevet de facto-standarden på grund af sin læsbarhed og nemme integration med web- og mobilapplikationer.
Hvorfor Forbruge REST API'er i MDK-Apps?
Selvom MDK har en fremragende indbygget understøttelse af OData-tjenester, er der mange scenarier, hvor REST API'er er uundværlige:
- Integration med Tredjeparts Tjenester: Mange populære tjenester som sociale medier, korttjenester, betalingsgateways og vejrdata eksponerer deres funktionalitet via REST API'er. For at integrere disse i din MDK-app er REST-forbrug nødvendigt.
- Adgang til Ældre Systemer: Hvis din organisation har ældre systemer, der ikke understøtter OData, men har en REST-grænseflade, giver MDK dig mulighed for at forbinde til dem.
- Fleksibilitet i Datastruktur: REST API'er giver ofte større fleksibilitet i den måde, data er struktureret og returneret på, hvilket kan være en fordel, når du arbejder med komplekse eller ikke-standardiserede datamodeller.
- Brugerdefinerede Tjenester: Du kan have dine egne brugerdefinerede backend-tjenester, der er udviklet med REST principper. MDK gør det nemt at forbinde til disse.
- Multi-kanal Applikationer: For at bygge ægte multi-kanal applikationer, der kan trække data fra forskellige kilder, er evnen til at forbruge både OData og REST API'er afgørende.
Forudsætninger og Opsætning
Før du dykker ned i implementeringen, er der et par forudsætninger:
- Grundlæggende MDK-Kendskab: Du bør have en grundlæggende forståelse af MDK-projektstruktur, metadatafiler og hvordan man navigerer i MDK-udviklingsmiljøet.
- SAP Business Technology Platform (BTP) Konto: Destinationer, som er essentielle for at forbinde til eksterne tjenester, konfigureres i SAP BTP.
- MDK Udviklingsmiljø: Typisk Visual Studio Code med SAP MDK Extension Pack installeret.
- Adgang til en REST API: For denne vejledning vil vi konceptuelt henvise til Petstore REST API'en som et eksempel, men principperne gælder for enhver REST API. Du kan også klone et eksisterende metadata-projekt fra MDK Tutorial GitHub-arkivet for at komme hurtigt i gang, men sørg for at gennemføre de nødvendige opsætningstrin for destinationer.
Trin-for-Trin Vejledning til Forbrug af REST API'er i MDK
Processen med at forbruge en REST API i MDK kan opdeles i tre hovedtrin:
1. Definer REST Endepunktet som en Destination
Før din MDK-app kan kommunikere med en ekstern REST API, skal den vide, hvor API'en er placeret, og hvordan den skal autentificere sig. Dette gøres ved at oprette en destination i SAP BTP (tidligere SAP Cloud Platform). Destinationer fungerer som en centraliseret måde at gemme forbindelsesoplysninger på, hvilket forbedrer sikkerheden og gør det nemmere at administrere forbindelser på tværs af applikationer.
For at oprette en destination:
- Log ind på din SAP BTP subaccount.
- Naviger til 'Connectivity' -> 'Destinations'.
- Klik på 'New Destination' og udfyld følgende felter:
- Name: Et unikt navn for din destination (f.eks.
PetstoreAPI). - Type: Vælg
HTTP. - URL: Den base-URL for din REST API (f.eks.
https://petstore.swagger.io/v2). - Proxy Type: Vælg
Internet(for offentligt tilgængelige API'er). - Authentication: Vælg den passende autentificeringsmetode. For en simpel offentlig API som Petstore kan
NoAuthenticationbruges. For mere sikre API'er kan du vælgeBasicAuthentication(brugernavn/adgangskode),OAuth2ClientCredentialsellerPrincipalPropagation. - Additional Properties: Dette er et kritisk trin for MDK. Tilføj følgende egenskaber:
WebIDEUsage=odata_genellerMobileServices: Dette fortæller SAP BTP og MDK, at destinationen kan bruges til generering af tjenester eller via Mobile Services.WebIDESystem=YourSystemName: Et logisk navn for systemet (f.eks.Petstore).WebIDEEnabled=true: Gør destinationen synlig for udviklingsværktøjer.
- Name: Et unikt navn for din destination (f.eks.
- Gem destinationen.
Denne destination vil nu være tilgængelig for din MDK-app via Mobile Services.
2. Opret en RestServiceTarget i MDK Metadata
Når din destination er konfigureret, skal du informere din MDK-app om, hvilken REST-tjeneste den skal bruge, og hvordan den skal tilgå den. Dette gøres ved at definere en RestServiceTarget i dine MDK metadatafiler, typisk i en Services mappe eller en Globals.service fil.
En RestServiceTarget fungerer som en abstraktion af din REST API, der specificerer den sti, der skal tilføjes til destinationens base-URL, og den type handlinger, der kan udføres (læse, oprette, opdatere, slette).
Eksempel på en RestServiceTarget definition:
{
"ServicePath": "/pet",
"ServiceUrl": "/odata/v4/PetstoreAPI",
"ServiceType": "REST",
"EntitySets": [
{
"Name": "Pets",
"ReadLink": "/pet",
"Actions": {
"Create": "/pet",
"Update": "/pet/{ID}",
"Delete": "/pet/{ID}"
}
}
]
}Forklaring af felterne:
ServicePath: Den relative URL-sti til din ressource, der appendes til destinationens base-URL (f.eks./petfor Petstore API).ServiceUrl: Refererer til din destination. Det er vigtigt at bruge formatet/odata/v4/YourDestinationName, selvom det er en REST-tjeneste. MDK's interne arkitektur ruter REST-kald via OData-laget.ServiceType: Skal væreREST.EntitySets: Definerer logiske samlinger af data, svarende til OData Entity Sets.Name: Et logisk navn for din samling (f.eks.Pets).ReadLink: Den sti, der bruges til at læse data.Actions: Specificerer stier for oprettelse, opdatering og sletning, hvis din API understøtter disse. Bemærk brugen af{ID}som en placeholder for dynamiske værdier.
Denne definition fortæller MDK, hvordan den skal interagere med din REST API, og hvilke ressourcer der er tilgængelige.
3. Knyt RestServiceTarget til MDK-Kontroller
Nu hvor din RestServiceTarget er defineret, kan du binde den til MDK UI-kontroller for at vise og manipulere data. MDK er designet til at forvente JSON-svar, der ligner OData-strukturer. Dette betyder, at hvis din REST API returnerer en simpel JSON-array af objekter, kan MDK ofte automatisk mappe dem til dine kontroller.
Typiske MDK-kontroller, der kan bindes til en RestServiceTarget, inkluderer:
- ObjectTable: Ideel til visning af lister af data (f.eks. en liste over kæledyr fra Petstore API'en). Du binder
ObjectTable.Bindingtil dinEntitySetog derefter de enkelte kontrol-egenskaber til de specifikke felter i JSON-svaret. - ContactCell: Bruges til at vise information, der ligner en kontaktperson.
- ObjectCollection: En mere generel kontrol til at vise samlinger af objekter, ofte brugt i mere komplekse layouts.
Eksempel på binding til en ObjectTable:
{
"_Type": "ObjectTable",
"_Name": "MyPetsTable",
"Binding": "/YourAppName/Services/Globals.service/Pets",
"Items": {
"ObjectCell": {
"_Type": "ObjectCell",
"Headline": "{name}",
"Subhead": "{status}",
"Footnote": "ID: {id}"
}
}
}I dette eksempel er Binding-egenskaben sat til /YourAppName/Services/Globals.service/Pets, som peger på den Pets EntitySet, du definerede i din RestServiceTarget. Headline, Subhead og Footnote er bundet direkte til JSON-feltnavne (name, status, id), som MDK forventer at finde i svaret fra Petstore API'en.
4. Håndtering af JSON-Svar og Datamapping
Nøglen til succesfuld REST-forbrug i MDK er at forstå den JSON-struktur, din API returnerer. MDK forventer, at et array af objekter, når du binder til en tabel eller samling. Hvis din API returnerer et mere komplekst objekt med indlejrede arrays, skal du muligvis justere din RestServiceTarget's ReadLink eller bruge MDK-regler til at transformere data, før de bindes til UI-kontrollerne.
For eksempel, hvis din API returnerer:
{
"data": [
{ "id": 1, "name": "Buddy" },
{ "id": 2, "name": "Bella" }
]
}MDK ville foretrække et direkte array: [ { "id": 1, "name": "Buddy" }, ... ]. Du kan muligvis justere din ReadLink til at pege på /data eller bruge en MDK-regel til at udpakke array'et.
Avancerede Overvejelser og Bedste Praksis
Fejlhåndtering
Robuste applikationer skal håndtere fejl elegant. Når du forbruger REST API'er, kan fejl opstå på grund af netværksproblemer, ugyldige anmodninger (4xx HTTP-statuskoder) eller serverfejl (5xx HTTP-statuskoder). MDK giver dig mulighed for at fange disse fejl ved at bruge `Catch` blokke i dine handlinger eller ved at definere `OnFailure` handlinger for dine tjenestekald. Du kan vise fejlmeddelelser til brugeren eller logge dem til fejlfinding.
Autentificering
Som nævnt tidligere er autentificering en kritisk del af sikker REST API-forbrug. Ud over NoAuthentication og BasicAuthentication, understøtter SAP BTP destinationer også mere avancerede metoder som OAuth 2.0. Hvis din REST API kræver en API-nøgle, kan denne ofte inkluderes som en del af URL'en (selvom det ikke er den mest sikre metode) eller som en header, som du kan konfigurere i din destination eller via MDK-regler, der ændrer anmodningsheaders.
Datatransformation og Forberedelse
Det er sjældent, at en REST API returnerer data i præcis det format, din MDK-app har brug for. Du kan bruge MDK-regler (JavaScript-funktioner) til at transformere data, før de vises, eller før de sendes tilbage til API'en. Dette kan involvere omstrukturering af JSON, formatering af datoer, beregning af værdier eller filtrering af data.
Ydeevneoptimering
For store datasæt skal du overveje ydeevne. Implementer paging (hvis API'en understøtter det) for at hente data i mindre bidder, hvilket reducerer netværksbelastningen og forbedrer appens responsivitet. MDK's ObjectTable og ObjectCollection understøtter lazy loading, hvilket betyder, at data først indlæses, når de bliver synlige på skærmen.
Offline-Funktionalitet
MDK's offline-funktionalitet er primært designet til OData-tjenester via OData Offline Store. For ren REST API-forbrug er der ingen indbygget offline-mekanisme. Hvis offline-kapacitet er et krav, skal du selv implementere en strategi for at gemme og synkronisere data lokalt (f.eks. ved at bruge MDK's klientlager eller ved at cache API-svar manuelt) og derefter synkronisere dem, når forbindelse er tilgængelig. Alternativt kan du overveje at oprette en OData-wrapper for din REST API, hvis offline-support er kritisk.
Sammenligning: REST vs. OData i MDK
For at hjælpe dig med at træffe informerede beslutninger, her er en sammenligning mellem at bruge REST API'er og OData-tjenester i MDK:
| Funktion | REST API i MDK | OData i MDK |
|---|---|---|
| Standardisering | Mindre standardiseret, afhænger af API-udbyderens design. | Høj standardisering via OData-protokollen (metadata, queries). |
| Fleksibilitet | Meget høj. Fuld kontrol over forespørgsler og svar. | God, men bundet til OData-syntaks for queries ($filter, $top, $skip). |
| Kompleksitet (opsætning) | Kræver omhyggelig mapping af JSON-struktur til MDK-kontroller. | Ofte lettere med auto-genererede entity sets og service-dokumenter. |
| Offline Support | Ikke indbygget for ren REST. Kræver manuel implementering. | Indbygget og robust via OData Offline Store. |
| Typisk Anvendelse | Integration med tredjeparts API'er, ældre systemer, brugerdefinerede tjenester, der ikke er OData-kompatible. | Integration med SAP-systemer (ERP, S/4HANA, CRM), der eksponerer OData-tjenester. |
| Query-funktioner | Afhænger af API'ens muligheder (f.eks. query-parametre). | Rige query-funktioner indbygget i protokollen ($filter, $orderby, $expand, $select). |
| Metadata | Ingen indbygget metadata-beskrivelse. | Rig metadata-beskrivelse af datamodellen (EDMX-fil). |
Ofte Stillede Spørgsmål (FAQ)
Her er svar på nogle almindelige spørgsmål vedrørende brug af REST API'er i MDK:
Kan jeg bruge REST API'er til at skrive data tilbage (POST, PUT, DELETE)?
Ja, absolut. MDK understøtter oprettelse, opdatering og sletning af data via REST API'er. I din RestServiceTarget definition har du Actions sektionen, hvor du definerer stierne for disse operationer. I dine MDK-regler kan du derefter kalde Service.RestServiceTarget.Create, Update eller Delete handlinger og sende de nødvendige payloads (for Create og Update).
Hvad hvis min REST API returnerer XML i stedet for JSON?
MDK forventer primært JSON-svar, når du binder data til UI-kontroller. Hvis din REST API returnerer XML, skal du sandsynligvis bruge en mellemliggende service til at transformere XML'en til JSON, før den når din MDK-app. Dette kan gøres med tjenester som SAP Cloud Integration (tidligere CPI) eller en custom backend-service.
Er der begrænsninger på, hvilke REST API'er jeg kan bruge?
Så længe REST API'en returnerer gyldig JSON og er tilgængelig via en destination, der kan konfigureres i SAP BTP, er den potentielt kompatibel. Den største udfordring ligger ofte i autentificeringsmetoden og i at sikre, at JSON-strukturen er nem at mappe i MDK.
Hvad med sikkerhed, når jeg forbruger REST API'er?
Sikkerhed er altafgørende. Brug altid HTTPS til at kommunikere med dine REST API'er for at kryptere data under transit. Konfigurer dine destinationer med den stærkest mulige autentificeringsmetode, som API'en understøtter (f.eks. OAuth 2.0). Undgå at hardcode følsomme oplysninger (som API-nøgler eller legitimationsoplysninger) direkte i din MDK-app's metadata; brug destinationer til at administrere disse sikkert.
Kan MDK håndtere REST API'er med komplekse indlejrede JSON-strukturer?
MDK kan håndtere indlejrede JSON-strukturer, men det kræver ofte mere detaljeret mapping og potentielt brug af MDK-regler til at navigere og transformere data. Du kan bruge dot-notation i dine bindinger (f.eks. {parent.child.property}) til at få adgang til indlejrede felter. For meget komplekse scenarier kan en mellemliggende transformationstjeneste være mere effektiv.
Konklusion
Evnen til at forbruge REST API'er i SAP Mobile Development Kit er en game-changer for udviklere, der ønsker at bygge fleksible og datadrevne mobile applikationer. Ved at mestre konfigurationen af destinationer, definitionen af RestServiceTarget'er og bindingen af data til MDK-kontroller som ObjectTable, kan du udvide rækkevidden af dine MDK-apps langt ud over SAP's OData-økosystem. Dette åbner døren til integration med et væld af tredjeparts tjenester og brugerdefinerede backends, hvilket gør dine MDK-applikationer mere kraftfulde, dynamiske og i stand til at levere enestående brugeroplevelser. Uanset om du trækker data fra en offentlig API som Petstore eller integrerer med et kritisk virksomhedssystem, giver MDK dig de værktøjer, du skal bruge for at lykkes med mobil integration.
Hvis du vil læse andre artikler, der ligner Forbrug REST API'er i SAP MDK Apps, kan du besøge kategorien Mobiludvikling.
