Osnove REST-a i RESTful API razvoj
Web programeri često govore o tome REST načela i RESTful arhitektura podataka, budući da je to ključni aspekt modernog razvoja, ali ponekad može biti nevjerojatno zbunjujuće. REST nije tehnologija sama po sebi, već prije metoda stvaranja API-ja s određenim organizacijskim načelima. Ta su načela vodič za razvojne programere i stvaranje univerzalnijeg okruženja za obradu API zahtjeva.
U ovom postu, želim objasniti RESTful razvojne prakse iz ptičje perspektive. Želim se uhvatiti u koštac što radije nego kako. Iako ću se dotaknuti oba područja, ovaj je post napravljen za svakoga tko se bavi razvojem weba, ali jednostavno ne može shvatiti koncept REST API-ja.
REST za web-programere
Kratica REST je kratica Reprezentativni državni prijenos. Ovo može zvučati pomalo zbunjujuće, a unos wikija čini ga još zbunjujućim. No, moguće je pojednostaviti terminologiju.
REST je samo niz smjernice i arhitektonski stilovi koji se koriste za prijenos podataka. To se obično primjenjuje na web-aplikacije, ali može prenositi podatke i na softver.
Skraćenica API označava sučelje za programiranje aplikacija, koje su metode povezivanje s drugim knjižnicama ili aplikacijama. Windows ima više API-ja, a Twitter ima i web-API, iako obavljaju različite zadatke s različitim ciljevima.
Kombinirajući sve to zajedno, RESTful API-ji su API-ji koji prate REST arhitekturu.
Što je točno REST arhitektura?
Ovdje je teško odrediti pojedinosti. Međutim, postoje neke arhitektonske konstante, kao što su:
- Dosljednost preko cijelog API-ja
- Postojanje bez državljanstva, tj. nema sesija na strani poslužitelja
- Korištenje HTTP statusni kodovi gdje je to prikladno
- Korištenje Krajnje točke URL-a s logičkom hijerarhijom
- Verzija u URL-u umjesto u HTTP zaglavlja
Ne postoje pretjerano specifične smjernice kao što je W3C HTML5 specifikacija koje bi mogle dovesti do konfuzije i miazme nesigurnosti u vezi s REST terminologijom.
Također, navedeni popis ne treba smatrati strogim pravilima, iako se odnose na većinu modernih RESTful API-ja.
REST je a lagana metodologija što ga čini savršenim za HTTP podatke. To je razlog zašto je REST postao toliko popularan na webu i zašto ga se smatra najboljim izborom za razvoj API-ja.
Kao što kaže Vinay Sahni, “API je korisničko sučelje razvojnog programera.” Sve bi trebalo biti jednostavno za korištenje i pružiti izvrsno korisničko iskustvo. RESTful API-ji nastoje upravo to učiniti.
Ključna rješenja za API-je RESTful
Ovi su savjeti u kontekstu API-ja strogo za web aplikacije. Ovo znači to HTTP je zahtjev, i to često znači API podaci hostiraju se na vanjskom poslužitelju. Pogledajmo kako RESTful API-ji rade na strani API korisnika.
API korisnik je web developer koji može izgraditi skriptu koja se povezuje s vanjskim API poslužiteljem, a onda se potrebni podaci prosljeđuju preko HTTP-a. Razvojni programer može prikazati podatke na svojoj web-lokaciji bez osobnog pristupa vanjskom poslužitelju (poput povlačenja Twitter podataka).
Općenito govoreći, postoje četiri naredbe naviknut pristupiti RESTful API-jevima:
DOBITI
za dohvaćanje objektaPOST
za stvaranje novog objektaSTAVITI
za izmjenu ili zamjenu objektaIZBRISATI
za uklanjanje predmeta
Svaka od ovih metoda bi trebala biti prošlo s API pozivom reći poslužitelju što da radi.
Velika većina web API-ja dopustiti samo DOBITI
zahtjevi za izvlačenje podataka s vanjskog poslužitelja. Autentifikacija je opcionalna, ali je svakako dobra ideja kada dopuštate potencijalno štetne naredbe STAVITI
ili IZBRISATI
.
Međutim, ne mnogo RESTful API-ja čak idu tako daleko. Razmislite o Pokéapi koja je besplatna baza podataka Pokémon API-ja. Otvoren je za javnost s pristojnim ograničavanjem stope (ograničavanje korisnika na određeni broj API zahtjeva tijekom određenog vremena), ali dopušta samo DOBITI
metoda pristupa resursima. To se može kolokvijalno nazvati a API samo za potrošnju.
Vrste vraćanja također su važne i trebale bi zadržati homogenost za sve resurse. JSON je popularan tip povratka s online specifikacijama koje objašnjavaju pravilne strukture podataka.
RESTful API-ji koriste imenice za API objekte, i glagoli za izvođenje radnji na te objekte. Autentifikacija može biti dio toga, ograničenje brzine također može biti dio toga. No, vrlo jednostavan API može proći bez mnogo briga za ograničenja korisnika.
Pristup API resursima
Javni API-ji su obično dostupno s izravnih adresa web-mjesta. To znači struktura URL-a je važna, i treba ga koristiti samo za zahtjeve API-ja.
Neki URL-ovi mogu sadržavati i prefiksni direktorij / V2 /
za ažuriranu verziju 2 prethodnog API-ja. To je uobičajeno za programere koji ne žele amortizirati svoj API 1.x, ali i dalje žele ponuditi najnoviju strukturu.
Zaista sam uživao u ovom postu osnovne strukture URL-a i primjere iz drugih usluga.
Imajte na umu da je krajnja točka povratni podaci će se promijeniti dramatično temeljeno na HTTP metoda. Na primjer, DOBITI
dohvaća sadržaj, dok POST
stvara novi sadržaj. Zahtjev može ukazivati na istu krajnju točku, ali rezultat može biti vrlo različit.
Pregledavanje primjera na mreži može vam pomoći da bolje shvatite pojmove. Već smo vidjeli Pokeapije, ali ovdje su još neki primjeri iz stvarnog svijeta pročitati:
- Reddit API
- GitHub API
- Flickr API
- Pinterest API
Izgradnja vlastitog API-ja
Proces izgradnje vlastitog API-ja ne bi se trebao uzimati olako, ali nije ni kompliciran kao što mislite. To traje razumijevanje API dizajna i najboljih praksi izgraditi nešto od prave vrijednosti.
Svaki API mora povezivanje s poslužiteljem za vraćanje podataka neke vrste. Ne samo da trebate pisati kod da to učinite, nego također trebate formatirati povratne podatke. Ostali potencijalni zahtjevi uključuju ovjera i ograničavanje brzine, tako da izgradnja API-ja zasigurno nije za one slabijeg srca.
Ali pogledajmo neke osnovne postavke API arhitekture.
Izrada krajnjih točaka
Jedan aspekt razvoja API-ja je krajnje točke zgrade. Kada stvaranje resursa želite koristiti imenice, a ne glagole. To znači da API podaci vraćaju osobu, mjesto ili stvar, najčešće je to stvar s određenim atributima (na primjer, cvrkut i svi njegovi metapodaci).
Može biti teško naučiti imenovanja imenica, ali to je ključni aspekt razvoja API-ja. Pojednostavljenje je najbolje kad god je to moguće.
Velika je rasprava singular vs. plural imenice. Ako ste izradili API za Twitter, prvo možete imati grupu objekata (tj. Tweet), a zatim stavku objekta drugo (tj. Tweet ID).
$ / tweet / 15032934882934 $ / tweetova / 15032934882934
U ovom slučaju, tvrdila bih da oblik u jednini izgleda bolje. To vrijedi osobito kada se vraća samo jedan resurs. Ali nema dokumentiranog 100% točnog odgovora, stoga učinite sve što je najbolje za vaš projekt.
Postavite vrstu povratka
Još jedno razmatranje je povratni tip podataka. Većina web korisnika očekuje JSON sadržaj, tako da je to vjerojatno najbolja opcija. XML je još jedan izbor ako želite ponuditi oboje. Međutim, JSON je osnovni tip API-ja za povratak među web-razvojnim programerima.
U razvoj API-ja ulazi mnogo više, pa preporučujem da se prvo igrate s API-jem. Na taj način možete vidjeti kako drugi programeri grade svoje API-je, i nadamo se da ćete se upoznati s tipičnim zahtjevima.
Ako tek započinjete, razmislite o uklanjanju tih razvojnih vodiča:
- REST API Tutorial stranica
- Pisanje jednostavnog REST API-ja
- Izgradnja web-usluge RESTful
Daljnji resursi
Najbolji način da naučite razvoj web-aplikacija je kroz praksu. Odobrena teorija je uvijek vrijedna proučavanja, jer vam omogućuje da razgovarate s programerima i razumijete kako stvari funkcioniraju.
No dobro je početi s razvojem API-ja povezivanje s drugim API-jem prvi. Saznajte osnove veza s klijentske strane, a odatle možete preći na razvoj API-ja na strani poslužitelja kreiranjem vlastitog API-ja od nule.
Ako je to vaš cilj, razmislite o sljedećim resursima koji će vam pomoći na putu.
knjige
- Pravilnik o dizajnu REST API-ja
- RESTful web API-ji
- RESTful kuharica za web-usluge
- Neometani ODMOR: Vodič za projektiranje savršenog API-ja
Članci
- Vodič za početnike za HTTP i REST
- Stvaranje RESTful API-ja
- RESTful Vodič za imenovanje resursa
- Stvaranje REST API-ja pomoću MEAN Stack