HVILE eller Rolig API-design (Representational State Transfer) er utformet for å dra nytte av eksisterende protokoller. Mens RESTEN kan brukes over nesten alle protokollen, er det vanligvis tar nytte av HTTP når brukes for Web-Api-er. Dette betyr at utviklere ikke trenger å installere bibliotek eller ekstra programvare for å dra nytte av en REST API design. RESTEN API-Design ble definert av Dr. Roy Fielding i sin 2000 doktorgrad avhandling. Det er kjent for sin utrolige lag av fleksibilitet., Siden data er ikke knyttet til metoder og ressurser, RESTEN har evnen til å håndtere flere typer samtaler, retur forskjellige dataformater og selv endre strukturelt med riktig implementering av hypermedia.
Denne friheten og fleksibiliteten som ligger i REST API design tillate deg å bygge et API som oppfyller dine behov og samtidig møte behovene til svært ulike kunder. I motsetning til SÅPE, RESTEN er ikke begrenset til XML, men i stedet kan gå tilbake XML, JSON, YAML eller andre format avhengig av hva kunden ønsker., Og i motsetning til RPC, kan brukerne ikke trenger å vite prosedyre navn eller spesifikke parametre i en bestemt rekkefølge.
Imidlertid, det er ulemper med å HVILE API-design. Du kan miste evnen til å opprettholde tilstand i RO, for eksempel i økter, og det kan være vanskeligere for nye utviklere å bruke. Det er også viktig å forstå hva som gjør en REST API Avslappende, og hvorfor disse begrensningene finnes før du bygger din API. Tross alt, hvis du ikke forstår hvorfor noe er utformet på den måten som det er, du kan hindre din innsats uten selv å realisere den.,
Forstå REST API Design
Mens de fleste Api hevder å være Avslappet, de faller kort av krav og begrensninger fremsatt av Dr. Fielding. Det er seks viktige begrensninger for å HVILE API-design å være klar over når de bestemmer seg for om dette er riktig API-type for prosjektet.
Klient-Server
klient-server begrensning fungerer på konseptet at klienten og serveren bør være atskilt fra hverandre og lov til å utvikle seg individuelt og uavhengig av hverandre., Med andre ord, jeg skulle være i stand til å gjøre endringer på min mobil applikasjon uten å påvirke enten data struktur eller utformingen av databasen på serveren. På samme tid, bør jeg være i stand til å endre databasen eller gjøre endringer på min server-programmet uten å påvirke den mobile klienten. Dette skaper en separasjon av bekymringer, la hver søknad vokse og skala uavhengig av de andre, og slik at organisasjonen til å vokse raskt og effektivt.,
Statsløse
REST Api-er statsløse, noe som betyr at samtaler kan gjøres uavhengig av hverandre, og hver samtale inneholder alle data som er nødvendig for å fullføre selv med hell. En REST API bør ikke stole på data som blir lagret på serveren eller sesjoner for å finne ut hva å gjøre med en samtale, men heller stole utelukkende på data som er gitt i at samtalen i seg selv. Identifiserende informasjon blir ikke lagret på serveren for utgående anrop. I stedet, hver samtale har den nødvendige data i seg selv, slik som API-nøkkel, access token, bruker-ID, osv., Dette bidrar også til å øke API er reliability av å ha alle de nødvendige data for å gjøre samtalen, i stedet for å stole på en rekke samtaler med server staten for å opprette et objekt, som kan resultere i delvis mislykkes. I stedet for å redusere krav til minne og hold programmet som skalerbare som mulig, til en God natts API krever at enhver stat som er lagret på klient—ikke på serveren.
Buffer
Fordi en statsløs API kan øke forespørsel overhead ved håndtering av store mengder av innkommende og utgående anrop, en REST API bør være utformet for å oppmuntre til lagring av cacheable data., Dette betyr at når data er cacheable, responsen skulle tilsi at data kan lagres opp til en viss tid (utløper-på), eller i tilfeller der data trenger å bli real-time, at svaret bør ikke være hurtigbufret av klienten. Ved å aktivere denne kritiske tvang, vil du ikke bare reduserer antall interaksjoner med API, reduserer intern server-bruk, men som også gir API-brukere med verktøy som er nødvendig for å gi den raskeste og mest effektive apps mulig. Husk at caching er gjort på klientsiden., Mens du kan være i stand til å cache data innenfor arkitektur til å utføre generelle ytelsen, hensikten er å veilede klienten på hvordan det skal gå videre, og hvorvidt kunden kan lagre data midlertidig.
Enhetlig Grensesnitt
nøkkelen til isolering klient server er å ha en enhetlig grensesnitt som gjør uavhengig utviklingen av programmet uten å ha programmets tjenester, modeller, eller handlinger som er tett koblet til API laget selv., Enhetlig grensesnitt lar klienten snakke til serveren i et enkelt språk, uavhengig av arkitektoniske backend av heller. Dette grensesnittet skal gi en uforanderlig, standardiserte måter å kommunisere mellom klienten og serveren, for eksempel ved hjelp av HTTP-med URI ressurser, CRUD (Create, Read, Update, Delete), og JSON.
Lagdelt System
Som navnet tilsier, er en lagdelt system er et system som består av lag, der hvert lag har en spesifikk funksjonalitet og ansvar., Hvis vi tenker på en Modell-View-Controller-rammeverk, hvert lag har sitt eget ansvar, med modeller som består av hvordan data bør være dannet, kontrolleren fokus på innkommende handlinger og vise med fokus på produksjon. Hvert lag er separate, men også i samspill med andre. I RESTEN API-design, det samme prinsippet gjelder, med forskjellige lag av arkitektur som arbeider sammen for å bygge et hierarki som bidrar til å skape en mer skalerbar og modulbasert program.,
En lagdelt system lar deg også kapsle legacy-systemer og flytter sjeldnere tilgang til funksjonaliteten til en felles mellomledd mens også skjerming mer moderne og brukte komponenter fra dem. I tillegg lagdelt system gir deg friheten til å flytte systemer i og ut av arkitektur i teknologier og tjenester utvikler seg, øker fleksibiliteten og holdbarheten så lenge du holder de forskjellige modulene som er løst koplet som mulig., Det er betydelige sikkerhetsmessige fordeler av å ha en lagdelt system fordi det tillater deg å stoppe angrep på proxy-laget, eller i andre lag, og hindre dem fra å komme til den faktiske server arkitektur. Ved å benytte en lagdelt system med en proxy-server, eller lage en single-point-of-tilgang, du er i stand til å holde kritisk og mer sårbare aspekter av din arkitektur bak en brannmur, som forhindrer direkte interaksjon med dem av klienten., Husk at sikkerhet er ikke basert på singelen «stop all» løsning, men heller på å ha flere lag med forståelse for at visse sikkerhetskontroller kan mislykkes eller bli forbigått. Som sådan, er det mer sikkerhet du er i stand til å implementere i systemet, jo mer sannsynlig er det å hindre ødeleggende Angrep.
– Koden på forespørsel
Kanskje den minst kjente av de seks begrensninger, og bare valgfri fiksering, Code on Demand gir mulighet for kode eller applets å bli overført via API for bruk i programmet., I hovedsak, det skaper et smart program som ikke lenger er utelukkende avhengig av sin egen kode struktur. Men, kanskje fordi det er forut for sin tid, Code-on-Demand har kjempet for adopsjon som Web-Api er inntatt på flere språk og overføring av kode øker sikkerheten spørsmål og bekymringer. (For eksempel katalogen ville ha til å være skrivbar, og brannmur ville ha det til at det kan normalt være begrenset innhold gjennom.)
Sammen, disse begrensningene gjøre opp teorien om Representational State Transfer, eller HVILE., Som du ser tilbake gjennom disse kan du se hvordan hver påfølgende tvang bygger på toppen av den forrige, og til slutt lage en ganske komplisert—men kraftig og fleksibel—programmet grensesnitt. Men viktigst av alt, disse begrensningene må du lage et design som fungerer på samme måte hvordan vi tilgang til sider som er i våre lesere på World Wide Web. Det skaper et API som ikke er diktert av dens arkitektur, men av representasjoner at den returnerer, og et API som—mens arkitektonisk statsløse—avhengig av representasjon til å fastsette programmets tilstand.,
For mer informasjon om REST API Design, sjekk ut the eBook Uforstyrret HVILE: EN Guide til å Designe den Perfekte API.
Legg igjen en kommentar