Översikt över REST. Del 1: Vad är REST? I den här delen kommer vi att djupdyka hur kommunikationen sker mellan en klient och server. Längs vägen kommer vi att avslöja nya termer och förklara dem.
För att säkerställa att allt är tydligt kommer vi att analysera klient-serverkommunikation med hjälp av en RESTful-applikation som exempel. Anta att vi utvecklar en webbapplikation som lagrar information om kunder och deras beställningar. Med andra ord kan vårt system utföra operationer på vissa enheter: skapa, redigera och ta bort dem och visa information om dem. Dessa enheter kommer att vara:

- kunder (kunder)
- order (kundordrar)
- varor (produkter)
Förfrågningar
Klientförfrågningar görs nästan alltid med hjälp av HTTP-protokollet. I allmänhet består HTTP-förfrågningar av flera komponenter:- HTTP-metod
- rubrik
- URI
- begäran organ
URI:er och resurser
Den data som klienter tar emot eller ändrar genom förfrågningar kallas resurser. Kommunikation mellan klient och server handlar om att manipulera resurser. I REST är resurser allt du kan ge ett namn till. På sätt och vis är de som klasser i Java. I Java kan vi skapa en klass för vad som helst. Så i REST kan en resurs vara vad som helst: en användare, ett dokument, en rapport, en order. Det kan antingen vara en abstraktion av någon enhet eller något specifikt, till exempel en bild, video, animation eller PDF-fil. I vårt exempel har vi tre resurser:- kunder (kunder)
- order (kundordrar)
- varor (produkter)
- /customers — URI för alla tillgängliga kunder
- /customers/23 — URI för en specifik kund, dvs kunden med ID=23
- /customers/4 — URI för en specifik kund, dvs kunden med ID=4.
- /customers/4/orders — URI för alla beställningar gjorda av kund nr 4
- /customers/1/orders/12 — URI för order nr 12 gjord av kund nr 1.
- /customers/1/orders/12/items — URI för listan över alla produkter i order nr 12 gjord av kund nr 1.
HTTP-metod
HTTP-metoden är en sekvens av alla tecken (förutom kontrolltecken och avgränsare), som indikerar huvudoperationen som utförs på resursen. Det finns flera vanliga HTTP-metoder. Vi kommer att lista de som används oftast i RESTful-tjänster:- GET — Få information om en viss resurs (genom dess ID) eller om en samling resurser
- POST — Skapa en ny resurs
- PUT — Ändra en resurs (genom dess ID)
- DELETE – Ta bort en resurs (via dess ID)
Rubriker
Förfrågningar, såväl som svar, innehåller HTTP-rubriker. De förmedlar ytterligare information om begäran (eller svaret). Rubriker är nyckel-värdepar. Du kan se listan över de vanligaste rubrikerna på Wikipedia . När det gäller REST skickar klienter ofta ett "Acceptera"-huvud i förfrågningar till servern. Denna rubrik behövs för att tala om för servern i vilket format klienten förväntar sig att få ett svar. Olika format anges i en lista över MIME-typer. MIME (Multipurpose Internet Mail Extensions) är en specifikation för kodning av information och formatering av meddelanden så att de kan skickas över Internet. Varje MIME-typ består av två delar separerade med ett snedstreck - en typ och en undertyp. Exempel på MIME-typer för olika typer av filer:- text — text/plain, text/css, text/html
- bild — bild/png, bild/jpeg, bild/gif
- ljud — ljud/wav, ljud/mpeg
- video — video/mp4, video/ogg
- application — application/json, application/pdf, application/xml, application/octet-stream
Accept:application/json
Den här rubriken talar om för servern att klienten förväntar sig att få ett svar i JSON-format.
Begäran kropp
Detta är meddelandet som skickas av klienten till servern. Huruvida begäran har en text eller inte beror på typen av HTTP-begäran. Till exempel innehåller GET- och DELETE-förfrågningar i allmänhet inte någon begärandekropp. Men PUT- och POST-förfrågningar kan - det beror bara på syftet med begäran. När allt kommer omkring, för att ta emot och/eller radera data med hjälp av ett ID (som skickas i URL) behöver du inte skicka ytterligare data till servern. Men för att skapa en ny resurs (genom en POST-förfrågan) måste du skicka resursen. Detsamma gäller för att modifiera en befintlig resurs. I REST skickas förfrågningstexten oftast i XML- eller JSON-format. JSON-formatet är vanligast. Anta att vi vill skicka en begäran till servern för att skapa en ny resurs. Om du inte har glömt, vi betraktade exemplet på en applikation som hanterar kundorder. Låt oss säga att vi vill skapa en ny kund. I vårt fall lagrar vi följande kunduppgifter: Namn, e-post, telefonnummer. Då kan brödtexten i begäran vara följande JSON:
{
"name" : "Amigo",
"email" : "amigo@jr.com",
"phone" : "+1 (222) 333-4444"
}
Sätt ihop förfrågningar
Så vi har undersökt vad som kan finnas i en kundförfrågan. Vi kommer nu att ge några exempel på förfrågningar tillsammans med beskrivningarBegäran | Beskrivning |
---|---|
|
Få information om kund nr 23 i JSON- eller XML-format |
|
Skapa en ny kund med följande fält: Namn — Amigo E-post — amigo@jr.com Telefonnummer — +1 (222) 333-4444 |
|
Redigera kund nr 1 enligt följande: Namn — Ben E-post — bigben@jr.com Telefonnummer — +86 (868) 686-8686 |
|
Ta bort order nr 6 gjord av kund nr 12 från systemet |
Svar
Låt oss säga några ord om serversvar. Ett svar består vanligtvis av följande delar:- svarskod
- rubriker
- svarskropp
HTTP-svarskoder
Låt oss överväga HTTP-svarskoder mer i detalj. En HTTP-statuskod är en del av den första raden i ett serversvar på förfrågningar som görs via HTTP-protokollet. Det är ett heltal som består av tre decimalsiffror. Den första siffran anger klassen för svarsstatuskoden. Svarskoden följs vanligtvis av en förklarande fras på engelska, åtskilda av ett mellanslag. Denna fras är en läsbar orsak till svaret. Exempel:- 201 Skapad
- 401 Obehörig
- 507 Otillräcklig lagring
- 1XX — Information
- 2XX — Dessa koder indikerar att kundens begäran har tagits emot och behandlats
- 3XX — Dessa koder informerar kunden om att en ytterligare begäran, vanligtvis till en annan URI, måste göras för att kunna slutföra operationen.
- 4XX — Klientfel. Sådana koder kan vara resultatet av en felaktigt sammansatt begäran. Ett annat exempel är den välkända "404 Not Found"-koden, som kan uppstå när en klient begär en icke-existerande resurs
- 5XX — Serverfel. Dessa koder returneras till klienten om servern är ansvarig för fel i operationen
GO TO FULL VERSION