Hvad er en REST API?

posted in: Articles | 0

REST eller RESTful API design (Representational State Transfer) er designet til at drage fordel af eksisterende protokoller. Mens resten kan bruges over næsten enhver protokol, det normalt tager fordel af HTTP når det bruges til Apeb-API ‘ er. Dette betyder, at udviklere ikke behøver at installere biblioteker eller yderligere soft .are for at drage fordel af et REST API-design. REST API Design blev defineret af Dr. Roy Fielding i sin 2000 doktorafhandling. Det er kendt for sin utrolige lag af fleksibilitet., Da data ikke er bundet til metoder og ressourcer, har REST evnen til at håndtere flere typer opkald, returnere forskellige dataformater og endda ændre strukturelt med den korrekte implementering af hypermedia.

denne frihed og fleksibilitet, der er forbundet med REST API-design, giver dig mulighed for at opbygge en API, der imødekommer dine behov, samtidig med at du imødekommer behovene hos meget forskellige kunder. I modsætning til SOAP er resten ikke begrænset til .ml, men kan i stedet returnere .ml, JSON, YAML eller ethvert andet format afhængigt af hvad klienten anmoder om., Og i modsætning til RPC er brugerne ikke forpligtet til at kende Procedurenavne eller specifikke parametre i en bestemt rækkefølge.

Der er dog ulemper ved REST API-design. Du kan miste evnen til at opretholde tilstand i hvile, såsom inden for sessioner, og det kan være vanskeligere for nyere udviklere at bruge. Det er også vigtigt at forstå, hvad der gør en REST API afslappende, og hvorfor disse begrænsninger eksisterer, før du bygger din API. Når alt kommer til alt, hvis du ikke forstår, hvorfor noget er designet på den måde, det er, kan du hindre din indsats uden selv at indse det.,

forståelse REST API Design

mens de fleste API ‘ er hævder at være afslappende, falder de under de krav og begrænsninger, som Dr. Fielding hævder. Der er seks vigtige begrænsninger for REST API design at være opmærksom på, når de beslutter, om dette er den rigtige API type til dit projekt.

Client-Server

client-server-begrænsningen fungerer på konceptet om, at klienten og serveren skal være adskilt fra hinanden og få lov til at udvikle sig individuelt og uafhængigt., Med andre ord skal jeg være i stand til at foretage ændringer i min mobilapplikation uden at påvirke hverken datastrukturen eller databasedesignet på serveren. Samtidig skal jeg være i stand til at ændre databasen eller foretage ændringer i min serverapplikation uden at påvirke mobilklienten. Dette skaber en adskillelse af bekymringer, så hver applikation vokser og skaleres uafhængigt af den anden og giver din organisation mulighed for at vokse hurtigt og effektivt.,

Statsløse

RESTEN af Api ‘ er statsløse, hvilket betyder, at opkald kan foretages uafhængigt af hinanden, og hvert opkald, der indeholder alle de data, der er nødvendige for at fuldføre sig selv med succes. En REST API bør ikke stole på, at data gemmes på serveren eller sessionerne for at bestemme, hvad de skal gøre med et opkald, men snarere udelukkende stole på de data, der leveres i selve opkaldet. Identificerende oplysninger gemmes ikke på serveren, når du foretager opkald. I stedet har hvert opkald de nødvendige data i sig selv, såsom API-nøglen, adgangstoken, bruger-ID osv., Dette hjælper også med at øge API ‘ ens pålidelighed ved at have alle de data, der er nødvendige for at foretage opkaldet, i stedet for at stole på en række opkald med servertilstand for at oprette et objekt, hvilket kan resultere i delvis fiasko. I stedet for at reducere hukommelseskrav og holde din ansøgning så skalerbar som muligt, kræver en RESTful API, at enhver tilstand er gemt på klienten—ikke på serveren.

Cache

da en statsløs API kan øge forespørgselsoverhead ved at håndtere store belastninger af indgående og udgående opkald, bør en REST-API være designet til at tilskynde til lagring af cacheable data., Dette betyder, at når data er cacheable, skal svaret indikere, at dataene kan gemmes op til et bestemt tidspunkt (udløber-at), eller i tilfælde, hvor data skal være realtid, at svaret ikke skal caches af klienten. Ved at aktivere denne kritiske begrænsning reducerer du ikke kun antallet af interaktioner med din API kraftigt, hvilket reducerer den interne serverbrug, men giver også dine API-brugere de nødvendige værktøjer til at levere de hurtigste og mest effektive apps. Husk, at caching udføres på klientsiden., Selvom du muligvis kan cache nogle data i din arkitektur for at udføre den samlede ydelse, er hensigten at instruere klienten om, hvordan den skal fortsætte, og om klienten midlertidigt kan gemme dataene.

ensartet Interface

nøglen til afkoblingsklienten fra serveren er at have en ensartet grænseflade, der tillader uafhængig udvikling af applikationen uden at have applikationens tjenester, modeller eller handlinger tæt koblet til selve API-laget., Den ensartede grænseflade lader klienten tale med serveren på et enkelt sprog, uafhængigt af den arkitektoniske backend af enten. Denne grænseflade skal give et uændret, standardiseret middel til at kommunikere mellem klienten og serveren, såsom at bruge http med Uri-ressourcer, CRUD (Opret, Læs, opdater, slet) og JSON.

lagdelt System

Som navnet antyder, er et lagdelt system et system bestående af lag, hvor hvert lag har en specifik funktionalitet og ansvar., Hvis vi tænker på en Model vie.Controller frame .ork, har hvert lag sit eget ansvar, med modellerne omfattende, hvordan dataene skal dannes, controlleren fokuserer på de indkommende handlinger og visningen fokuserer på output. Hvert lag er adskilt, men interagerer også med det andet. I REST API-design gælder det samme princip, hvor forskellige lag af arkitekturen arbejder sammen om at opbygge et hierarki, der hjælper med at skabe en mere skalerbar og modulær applikation.,

et lagdelt system giver dig også mulighed for at indkapsle ældre systemer og flytte mindre almindeligt adgang til funktionalitet til en delt formidler, mens du også beskytter mere moderne og almindeligt anvendte komponenter fra dem. Derudover giver det lagdelte system dig friheden til at flytte systemer ind og ud af din arkitektur, når teknologier og tjenester udvikler sig, hvilket øger fleksibiliteten og levetiden, så længe du holder de forskellige moduler så løst koblet som muligt., Der er betydelige sikkerhedsmæssige fordele ved at have et lagdelt system, da det giver dig mulighed for at stoppe angreb på pro .y-laget eller inden for andre lag, hvilket forhindrer dem i at komme til din faktiske serverarkitektur. Ved at anvende en lagdelt system med en proxy, eller at skabe et enkelt adgangspunkt, du er i stand til at holde kritisk og mere sårbare aspekter af din arkitektur bag en firewall, som forhindrer direkte interaktion med dem af kunden., Husk, at sikkerhed ikke er baseret på en enkelt “stop all” – løsning, men snarere på at have flere lag med den forståelse, at visse sikkerhedskontroller kan mislykkes eller omgås. Som sådan, jo mere sikkerhed du er i stand til at implementere i dit system, jo mere sandsynligt er du for at forhindre skadelige angreb.

Code on Demand

måske den mindst kendte af de seks begrænsninger, og den eneste valgfri begrænsning, Code on Demand giver mulighed for kode eller applets, der skal overføres via API til brug i programmet., I det væsentlige skaber det en smart applikation, der ikke længere udelukkende er afhængig af sin egen kodestruktur. Men måske fordi det er forud for sin tid, har Code on Demand kæmpet for vedtagelse, da Apeb-API ‘ er forbruges på tværs af flere sprog, og transmission af kode rejser sikkerhedsspørgsmål og bekymringer. (For eksempel skal mappen være skrivbar, og fire .allen skal lade det, der normalt kan være begrænset indhold, igennem.)

sammen udgør disse begrænsninger teorien om repræsentativ Statsoverførsel eller hvile., Når du ser tilbage gennem disse, kan du se, hvordan hver efterfølgende begrænsning bygger oven på det foregående og til sidst skaber en ret kompleks—men kraftfuld og fleksibel—applikationsprogramgrænseflade. Men vigtigst af alt udgør disse begrænsninger et design, der fungerer på samme måde som hvordan vi får adgang til sider i vores bro .sere på Worldorld .ide .eb. Det skaber en API, der ikke dikteres af dens arkitektur, men af de repræsentationer, den vender tilbage, og en API, der—mens arkitektonisk statsløs—er afhængig af repræsentationen for at diktere applikationens tilstand.,

For mere information om REST API Design, tjek eBook uforstyrret REST: en Guide til at designe den perfekte API.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *