Oversikt over REST. Del 1: Hva er REST? I denne delen skal vi dykke dypt ned i hvordan kommunikasjon foregår mellom klient og server. Underveis vil vi avdekke nye begreper og forklare dem.
For å sikre at alt er klart, vil vi analysere klient-server-kommunikasjon ved å bruke en RESTful-applikasjon som eksempel. Anta at vi utvikler en nettapplikasjon som lagrer informasjon om kunder og deres bestillinger. Med andre ord, systemet vårt er i stand til å utføre operasjoner på visse enheter: opprette, redigere og slette dem, og vise informasjon om dem. Disse enhetene vil være:

- kunder (kunder)
- bestillinger (kundebestillinger)
- varer (produkter)
Forespørsler
Klientforespørsler gjøres nesten alltid ved hjelp av HTTP-protokollen. Generelt består HTTP-forespørsler av flere komponenter:- HTTP-metoden
- Overskrift
- URI
- forespørselsorgan
URIer og ressurser
Dataene som klienter mottar eller endrer gjennom forespørsler, kalles ressurser. Klient-server-kommunikasjon handler om å manipulere ressurser. I REST er ressurser alt du kan gi navn til. På en måte er de som klasser i Java. I Java kan vi lage en klasse for hva som helst. Så i REST kan en ressurs være hva som helst: en bruker, et dokument, en rapport, en ordre. Det kan enten være en abstraksjon av en enhet, eller noe spesifikt, for eksempel et bilde, video, animasjon eller PDF-fil. I vårt eksempel har vi 3 ressurser:- kunder (kunder)
- bestillinger (kundebestillinger)
- varer (produkter)
- /customers — URI for alle tilgjengelige kunder
- /customers/23 — URI til en spesifikk kunde, dvs. kunden med ID=23
- /customers/4 — URI til en spesifikk kunde, dvs. kunden med ID=4.
- /customers/4/orders — URI for alle bestillinger gjort av kunde nr. 4
- /customers/1/orders/12 — URI for ordre nr. 12 laget av kunde nr. 1.
- /customers/1/orders/12/items — URI for listen over alle produkter i ordre nr. 12 laget av kunde nr. 1.
HTTP-metoden
HTTP-metoden er en sekvens av alle tegn (unntatt kontrolltegn og skilletegn), som indikerer hovedoperasjonen som utføres på ressursen. Det er flere vanlige HTTP-metoder. Vi vil liste opp de som brukes oftest i RESTful-tjenester:- GET — Få informasjon om en bestemt ressurs (gjennom dens ID) eller om en samling av ressurser
- POST — Opprett en ny ressurs
- PUT — Endre en ressurs (gjennom dens ID)
- SLETT – Slett en ressurs (via dens ID)
Overskrifter
Forespørsler, så vel som svar, inneholder HTTP-hoder. De formidler tilleggsinformasjon om forespørselen (eller svaret). Overskrifter er nøkkelverdi-par. Du kan se listen over de vanligste overskriftene på Wikipedia . Når det gjelder REST, sender klienter ofte en "Accept" header i forespørsler til serveren. Denne overskriften er nødvendig for å fortelle serveren hvilket format klienten forventer å motta et svar i. Ulike formater er gitt i en liste over MIME-typer. MIME (Multipurpose Internet Mail Extensions) er en spesifikasjon for koding av informasjon og formatering av meldinger slik at de kan sendes over Internett. Hver MIME-type består av to deler atskilt med en skråstrek - en type og undertype. Eksempler på MIME-typer for forskjellige filtyper:- tekst — tekst/vanlig, tekst/css, tekst/html
- bilde — bilde/png, bilde/jpeg, bilde/gif
- lyd — audio/wav, audio/mpeg
- video — video/mp4, video/ogg
- application — application/json, application/pdf, application/xml, application/octet-stream
Accept:application/json
Denne overskriften forteller serveren at klienten forventer å motta et svar i JSON-format.
Forespørselsinstans
Dette er meldingen som sendes av klienten til serveren. Hvorvidt forespørselen har en kropp eller ikke, avhenger av typen HTTP-forespørsel. For eksempel inneholder GET- og DELETE-forespørsler vanligvis ingen forespørselstekst. Men PUT- og POST-forespørsler kan - det avhenger bare av formålet med forespørselen. Tross alt, for å motta og/eller slette data ved hjelp av en ID (som sendes i URL-en), trenger du ikke å sende ytterligere data til serveren. Men for å opprette en ny ressurs (gjennom en POST-forespørsel), må du sende ressursen. Det samme gjelder for å endre en eksisterende ressurs. I REST sendes forespørselsteksten oftest i XML- eller JSON-format. JSON-formatet er mest vanlig. Anta at vi ønsker å sende en forespørsel til serveren for å opprette en ny ressurs. Hvis du ikke har glemt, vi vurderte eksempelet på en applikasjon som administrerer kundeordrer. La oss si at vi ønsker å opprette en ny kunde. I vårt tilfelle lagrer vi følgende kundeinformasjon: Navn, e-post, telefonnummer. Da kan brødteksten i forespørselen være følgende JSON:
{
"name" : "Amigo",
"email" : "amigo@jr.com",
"phone" : "+1 (222) 333-4444"
}
Sette forespørsler sammen
Så vi har undersøkt hva som kan være i en kundeforespørsel. Vi vil nå gi noen eksempler på forespørsler sammen med beskrivelserBe om | Beskrivelse |
---|---|
|
Få informasjon om kunde nr. 23 i JSON- eller XML-format |
|
Opprett en ny kunde med følgende felt: Navn — Amigo E-post — amigo@jr.com Telefonnummer — +1 (222) 333-4444 |
|
Rediger kunde nr. 1 som følger: Navn — Ben E-post — bigben@jr.com Telefonnummer — +86 (868) 686-8686 |
|
Slett ordre nr. 6 laget av kunde nr. 12 fra systemet |
Svar
La oss si noen ord om serversvar. Et svar består vanligvis av følgende deler:- svarkode
- overskrifter
- responskropp
HTTP-svarkoder
La oss vurdere HTTP-svarkoder mer detaljert. En HTTP-statuskode er en del av den første linjen i et serversvar på forespørsler gjort via HTTP-protokollen. Det er et heltall som består av tre desimaler. Det første sifferet angir klassen for svarstatuskoden. Svarkoden etterfølges vanligvis av en forklarende setning på engelsk, atskilt med et mellomrom. Denne setningen er en menneskelig lesbar grunn til svaret. Eksempler:- 201 Opprettet
- 401 Uautorisert
- 507 Utilstrekkelig lagringsplass
- 1XX — Informasjon
- 2XX — Disse kodene indikerer at klientens forespørsel ble mottatt og behandlet
- 3XX — Disse kodene informerer klienten om at en tilleggsforespørsel, vanligvis til en annen URI, må gjøres for å fullføre operasjonen
- 4XX — Klientfeil. Slike koder kan være et resultat av en feilkomponert forespørsel. Et annet eksempel er den velkjente "404 Not Found"-koden, som kan oppstå når en klient ber om en ikke-eksisterende ressurs
- 5XX — Serverfeil. Disse kodene returneres til klienten hvis serveren er ansvarlig for feil i operasjonen
GO TO FULL VERSION