HATEOAS ( H ypermedia a s t he E ngine of a pplication state ) er arkitektoniske restriktioner for REST - applikationer .
Med HATEOAS interagerer klienten med en netværksapplikation, hvis server giver dynamisk adgang via hypermedier . REST-klienten behøver ikke på forhånd at vide, hvordan man interagerer med applikationen eller serveren uden for hypermedier.
I modsætning til SOA -arkitekturen , hvor klient-server-interaktioner er strengt defineret af en grænseflade, adskiller HATEOAS klienten fra serveren og giver dem mulighed for at udvikle sig uafhængigt.
REST-klienten tilgår den faste URL, og alle efterfølgende handlinger fra klienten kendes fra de ressourcer, der returneres fra serveren. Ressourcetyper, repræsentationer og deres relationer er standardiserede. Klienten krydser ressourcerne ved at hente links eller interagere på enhver anden mulig måde for den type ressource. RESTful interaktioner fungerer således gennem hypermedier snarere end gennem en foruddefineret grænseflade [1] .
Lav for eksempel en anmodning, der returnerer en kontoressource i en XML-repræsentation [2] :
GET /accounts/12345 HTTP / 1.1 Host : bank.example.com Accepter : application/xml ...Svaret vil være:
HTTP / 1.1 200 OK Indholdstype : applikation/xml Indholdslængde : ... <?xml version="1.0"?> <account> <account_number> 12345 </account_number> <balance currency= "usd" > 100,00 </balance> <link rel= "deposit" href= "https://bank. eksempel.com/konti/12345/indskud" /> <link rel= "udtræk" href= "https://bank.eksempel.com/konti/12345/udbetaling" /> <link rel= "overfør" href= " https://bank.example.com/accounts/12345/transfer" /> <link rel= "close" href= "https://bank.example.com/accounts/12345/close" /> </account>Svaret indeholder links til at indbetale, hæve, overføre og lukke kontoen
I tilfælde af en negativ saldo er kun et depositum tilgængeligt:
HTTP / 1.1 200 OK Indholdstype : applikation/xml Indholdslængde : ... <?xml version="1.0"?> <account> <account_number> 12345 </account_number> <balance currency= "usd" > -25,00 </balance> <link rel= "deposit" href= "https://bank .example.com/account/12345/deposit" /> </account>Nu er kun ét link tilgængeligt: Indbetal flere penge. Derfor "The Engine of Application State" i titlen. De mulige handlinger varierer afhængigt af ressourcens tilstand.
Klienten behøver ikke på forhånd at kende typerne af ressourcer og mekanismerne til at interagere med dem gennem serveren. Forståelse af nye typer ressourcer opnås i realtid, ved kørsel, når ressourcer modtages fra serveren [3] .
Roy Fieldings ph.d.-afhandling identificerede HATEOAS-begrænsninger som en integreret del af "single interface"-funktionen [3] [1] .
Softwareudvikling | |
---|---|
Behandle | |
Koncepter på højt niveau | |
Vejbeskrivelse |
|
Udviklingsmetoder _ | |
Modeller | |
Bemærkelsesværdige tal |
|