Kode din første API med Node.js og Express Forstå REST APIs

Forstå REST og RESTful APIs

Hvis du har brukt mye tid med moderne webutvikling, har du kommet over betingelser som REST og API. Hvis du har hørt om disse vilkårene eller jobbet med APIer, men ikke har full forståelse av hvordan de fungerer eller hvordan du bygger din egen API, er denne serien for deg.

I denne opplæringsserien starter vi med en oversikt over REST-prinsipper og konsepter. Da fortsetter vi å lage vår egen fullverdige API som kjører på en Node.js Express-server og kobles til en MySQL-database. Etter at du har fullført denne serien, bør du føle deg trygg på å bygge din egen API eller delve i dokumentasjonen for en eksisterende API.

Forutsetninger

For å få mest mulig ut av denne opplæringen, bør du allerede ha noen grunnleggende kommandolinje kunnskap, kjennskap til grunnleggende for JavaScript, og ha Node.js installert globalt.

Hva er REST og RESTful APIs?

Representativ statlig overføring, eller HVILE, beskriver en arkitektonisk stil for webtjenester. REST består av et sett med standarder eller begrensninger for å dele data mellom forskjellige systemer, og systemer som implementerer REST kalles RESTful. REST er et abstrakt konsept, ikke et språk, rammeverk eller type programvare.

En løs analogi for REST ville være å holde en samling av vinyl vs å bruke en streaming musikk tjeneste. Med den fysiske vinylinnsamlingen må hver plate dupliseres i sin helhet for å dele og distribuere kopier. Med en streamingtjeneste kan imidlertid samme musikk deles i evighet via en referanse til noen data som en sangtittel. I dette tilfellet er streaming musikk en RESTful tjeneste, og vinyl samlingen er en ikke-RESTful tjeneste.

en API er et applikasjonsprogrammeringsgrensesnitt, som er et grensesnitt som gjør at programvarene kan kommunisere med hverandre. EN RESTful API er bare en API som overholder RESTs prinsipper og begrensninger. I en web-API mottar en server en be om gjennom et URL-endepunkt og sender en respons i retur, som ofte er data i et format som JSON.

REST Prinsipper

Seks ledende begrensninger definerer REST-arkitekturen, skissert nedenfor.

  1. Enhetlig grensesnitt: Grensesnittet til komponentene må være det samme. Dette betyr at du bruker URI-standarden til å identifisere ressurser - med andre ord, baner som kan legges inn i nettleserens plasseringslinje.
  2. Klient server: Det er en adskillelse av bekymringer mellom serveren, som lagrer og manipulerer data, og klienten, som ber om og viser svaret.
  3. Stateless Interactions: All informasjon om hver forespørsel finnes i hver enkelt forespørsel og er ikke avhengig av økt tilstand.
  4. hurtiglagerbar: Klienten og serveren kan cache ressurser.
  5. Lagret system: Klienten kan kobles til slutt-serveren, eller et mellomliggende lag, for eksempel en belastningsbalanse.
  6. Kode på etterspørsel (valgfritt): En klient kan laste ned kode, noe som reduserer synligheten fra utsiden.

Forespørsel og svar

Du vil allerede være kjent med det faktum at alle nettsteder har nettadresser som begynner med http (eller https for den sikre versjonen). HyperText Transfer Protocol, eller HTTP, er metoden for kommunikasjon mellom klienter og servere på internett.

Vi ser det tydeligst i nettleserens nettleser, men HTTP kan brukes til mer enn bare å be om nettsteder fra servere. Når du går til en nettadresse på nettet, gjør du faktisk en forespørsel om den spesifikke ressursen, og nettstedet du ser er svarets kropp. Vi vil gå over og andre typer forespørsler kort tid.

HTTP fungerer ved å åpne en TCP (Transmission Control Protocol) tilkobling til en serverport (80 til http, 443 til https) for å gjøre en forespørsel, og lytteren reagerer med en status og en kropp.

En forespørsel må bestå av en nettadresse, en metode, headerinformasjon og en kropp.

Forespørselsmetoder

Det er fire store HTTP-metoder, også referert til som HTTP-verb, som ofte brukes til å samhandle med web-APIer. Disse metodene definerer handlingen som skal utføres med en gitt ressurs.

HTTP-forespørselsmetoder samsvarer løst med paradigmet til CRUD, som står for Opprett, oppdater, les, slett. Selv om CRUD refererer til funksjoner som brukes i databaseoperasjoner, kan vi bruke disse designprinsippene til HTTP-verb i en RESTful API.

Handling Forespørselsmetode Definisjon
Lese Henter en ressurs
Skape POST Oppretter en ny ressurs
Oppdater SETTE Oppdaterer en eksisterende ressurs
Slett SLETT Slette en ressurs

er en sikker, skrivebeskyttet operasjon som ikke vil endre tilstanden til en server. Hver gang du treffer en URL i nettleseren din, for eksempel https://www.google.com, du sender en forespørsel til Googles servere.

POST brukes til å opprette en ny ressurs. Et kjent eksempel på POST Registrerer deg som bruker på et nettsted eller en app. Etter å ha sendt skjemaet, a POST forespørsel med brukerdata kan sendes til serveren, som deretter vil skrive den informasjonen i en database.

SETTE oppdaterer en eksisterende ressurs, som kan brukes til å redigere innstillingene til en eksisterende bruker. I motsetning til POST, SETTE er idempotent, Det betyr at det samme samtalen kan gjøres flere ganger uten å produsere et annet resultat. For eksempel, hvis du sendte det samme POST be om å opprette en ny bruker i en database flere ganger, ville det opprette en ny bruker med samme data for hver forespørsel du har laget. Men bruker det samme SETTE forespørsel på samme bruker vil kontinuerlig produsere det samme resultatet.

SLETT, som navnet antyder, vil bare slette en eksisterende ressurs.

Response Codes

Når en forespørsel går gjennom fra klienten til serveren, sender serveren tilbake et HTTP-svar, som inkluderer metadata om svaret som er kjent som overskrifter, samt kroppen. Den første og viktigste delen av svaret er statuskode, som indikerer om en forespørsel var vellykket, hvis det oppsto en feil, eller om det skulle treffes en annen handling.

Den mest kjente svarkoden du vil bli kjent med er 404, som betyr Ikke funnet. 404 er en del av 4xx klasse av statuskoder, som indikerer klientfeil. Det er fem klasser av statuskoder som hver inneholder en rekke svar.

  • 1xx: Informasjon
  • 2xx: Suksess
  • 3xx: Omdirigering
  • 4xx: Klientfeil
  • 5xx: Serverfeil

Andre vanlige svar du kanskje er kjent med er 301 Flyttet permanent, som brukes til å omdirigere nettsteder til nye nettadresser, og 500 intern serverfeil, som er en feil som kommer opp ofte når noe uventet har skjedd på en server som gjør det umulig å oppfylle ønsket forespørsel.

Med hensyn til RESTful APIs og deres tilsvarende HTTP-verb, bør alle svarene være i 2xx område.

Be om Respons
200 (OK)
POST 201 (Laget)
SETTE 200 (OK)
SLETT 200 (OK), 202 (Godkjent), eller 204 (Ikke noe innhold)

200 OK er svaret som indikerer at en forespørsel er vellykket. Det brukes som svar når du sender en eller SETTE be om. POST vil returnere a 201 Opprettet for å indikere at en ny ressurs er opprettet, og SLETT har noen akseptable svar, som formidler at enten forespørselen er akseptert (202), eller det er ikke noe innhold å returnere fordi ressursen ikke lenger eksisterer (204).

Vi kan teste statuskoden til en ressursforespørsel ved bruk av cURL, som er et kommandolinjeværktøy som brukes til å overføre data via nettadresser. Ved hjelp av curl, etterfulgt av -Jeg eller --inkludere flagg, vil sende en Be om en URL og vis topptekstene og kroppen. Vi kan teste dette ved å åpne kommandolinjeprogrammet og teste cURL med Google.

krølle -i https://www.google.com 

Googles server vil svare med følgende.

HTTP / 2 200 dato: Tue, 14 Aug 2018 05:15:40 GMT utløper: -1 cache-kontroll: privat, maks-alder = 0 innholdstype: tekst / html; charset = ISO-8859-1 ... 

Som vi kan se, er curl forespørsel returnerer flere overskrifter og hele HTML-kroppen av svaret. Siden forespørselen gikk gjennom, er den første delen av svaret den 200 statuskode, sammen med versjonen av HTTP (dette vil enten være HTTP / 1.1 eller HTTP / 2).

Siden denne forespørselen returnerer et nettsted, er det innholdstype (MIME type) som returneres er text / html. I en RESTful API, vil du sannsynligvis se application / json for å indikere svaret er JSON.

Interessant, vi kan se en annen type svar ved å legge inn en litt annen URL. Gjør a curl på Google uten www.

krølle -i https://google.com 
HTTP / 2 301 plassering: https://www.google.com/ innholdstype: text / html; charset = UTF-8

Google omdirigeringer google.com til www.google.com, og bruker a 301 svar for å indikere at ressursen skal omdirigeres.

REST API Endpoints

Når en API er opprettet på en server, er dataene den er tilgjengelig via endepunkter. en endepunkt er nettadressen til forespørselen som kan godta og behandle , POST, SETTE, eller SLETT be om.

En API-nettadresse vil bestå av roten, banen og valgfri spørringsstrengen.

  • Rot f.eks. https://api.example.com eller https://api.example.com/v2: Roten til API-en, som kan bestå av protokollen, domenet og versjonen.
  • Sti f.eks. / brukere /eller / brukere / 5: Unik lokalisering av den spesifikke ressursen.
  • Spørringsparametre (valgfritt) f.eks. ?plassering = chicago & alder = 29: Valgfrie nøkkelverdierpar som brukes til sortering, filtrering og paginering.
    Vi kan sette dem sammen for å implementere noe som eksempelet nedenfor, som ville returnere en liste over alle brukere og bruke en spørringsparameter for grense å filtrere svarene til bare å inkludere ti resultater.

https://api.example.com/users?limit=10

Generelt, når folk henviser til en API som en RESTful API, refererer de til navngivningskonvensjonene som går inn i å bygge API-URL-endepunkter. Noen viktige konvensjoner for en standard RESTful API er som følger:

  • Stier bør være flertall: For eksempel, for å få brukeren med et ID på 5, vi ville bruke / brukere / 5, ikke / Bruker / 5.
  • Endpoeng skal ikke vise filtypen: Selv om en API mest sannsynlig vil returnere JSON, bør nettadressen ikke ende i .json.
  • Endpoints bør bruke substantiver, ikke verb: Ord som Legg til og slette bør ikke vises i en REST URL. For å legge til en ny bruker, vil du bare sende en POST forespørsel til / brukere, ikke noe som helst / brukere / add. API-en skal utvikles for å håndtere flere typer forespørsler til samme nettadresse.
  • Stier er saksfølsomme, og skal skrives i små bokstaver med bindestreker i motsetning til underskrifter.

Alle disse konvensjonene er retningslinjer, da det ikke er noen strenge REST-standarder som skal følges. Bruk av disse retningslinjene vil imidlertid gjøre APIen din konsistent, kjent og lett å lese og forstå.

Konklusjon

I denne artikkelen lærte vi hvilke REST og RESTful APIer, hvordan HTTP-forespørselsmetoder og svarkoder fungerer, strukturen av en API-nettadresse og vanlige RESTful API-konvensjoner. I den neste opplæringen lærer vi hvordan du bruker all denne teorien ved å sette opp en Express-server med Node.js og bygge vår egen API.