Noen gang lurt på hva forskjellen er mellom GET
og POST
forespørsler, eller når du skal brukePUT
? Du er ikke alene. Å ha en grunnleggende forståelse av DE forskjellige HTTP-metodene, eller verbene, Er En APIsupports en nyttig kunnskap når du utforsker Og tester Apier.
I dette innlegget vil jeg diskutere hvordan HVER HTTP-metoden brukes og how toincorporate dem I API testing.
HTTP-Metoder
GET
POST
PUT
HEAD
DELETE
PATCH
OPTIONS
- få
- Testing AV EN API med GET-forespørsler
- POST
- Teste EN API med postforespørsler
- PUT
- Testing AV EN API med PUT-forespørsler
- PATCH
- Testing EN API MED PATCH forespørsler
- SLETT
- Testing AV EN API med SLETTEFORESPØRSLER
- HODE
- Testing AV EN API med HODEFORESPØRSLER
- ALTERNATIVER
- Testing AV EN API med ALTERNATIVER forespørsler
- Flere ressurser
få
GET
forespørsler er de vanligste og mest brukte metodene i apier ognettsteder. ENKELT sagt, GET-metoden brukes til å hente data fra aserver på den angitte ressursen. Si for Eksempel At Du har En APIwith en /users
endepunkt. Å gjøre EN GET-forespørsel til det endepunktet børreturnere en liste over alle tilgjengelige brukere.
Siden EN GET-forespørsel bare ber om data og ikke endrer anyresources, er det ansett som sikker og idempotent metode.
Testing AV EN API med GET-forespørsler
når du oppretter tester for EN API, vilGET
– metoden sannsynligvis være den hyppigste typen forespørsel fra forbrukere av tjenesten, så det er viktig å sjekke alle kjente endepunkter med EN GET-forespørsel.
på et grunnleggende nivå bør disse tingene valideres:
- Kontroller at en gyldig GET-forespørsel returnerer en
200
statuskode. - Kontroller AT EN HENT-forespørsel til en bestemt ressurs returnerer correctdata. For eksempel returnerer
GET /users
en liste over brukere.
GET ER ofte standardmetoden I HTTP-klienter, så å lage testerfor disse ressursene bør være enkle med hvilket som helst verktøy du velger.
POST
i webtjenester brukesPOST
forespørsler til å sende data til Apiserveren for å opprette eller utdpate en ressurs. Dataene som sendes til serveren, er lagret intherequest body OF THE HTTP request.
det enkleste eksempelet er et kontaktskjema på et nettsted. Når du fyller ut inngangene i et skjema og treffer Send, blir dataene satt innresponslegemet til forespørselen og sendt til serveren. Dette kan VÆRE json, XML eller spørringsparametere (det er mange andre formater,men disse er de vanligste).
det er verdt å merke seg at en POST
forespørsel er ikke-idempotent. Itmutates data på backend server (ved å opprette eller oppdatere aresource), i motsetning til en GET
forespørsel som ikke endrer anydata. Her er en flott forklaring på idempotentcy.
Teste EN API med postforespørsler
den nest vanligste HTTP-metoden du vil støte på I API-testsis POST
. Som nevnt ovenfor brukesPOST
forespørsler tilsend data TIL API-serveren og opprett eller oppdater en ressurs. SincePOST forespørsler endre data, er det viktig Å HA API tester for allof DINE INNLEGG metoder.
Her er noen tips for testing AV postforespørsler:
- Opprett en ressurs med en
POST
forespørsel og sørg for at en200
statuskode returneres. - gjør deretter en
GET
forespørsel om den ressursen, og sørg for at dataene ble lagret riktig. - Legg til tester som sikrer
POST
forespørsler mislykkes med feil eller dårlig formaterte data.
for noen flere ideer om vanlige API-testingsscenarioer,sjekk ut dette innlegget.
PUT
Simlar Å POSTE, PUT
forespørsler brukes til å sende data TIL API toupdate eller opprette en ressurs. Forskjellen isthatPUT forespørsler er idempotent. Thatis, ringer samme PUT forespørsel flere ganger vil alltid producethe samme resultat. I kontrast, ringer en POST forespørsel gjentatte gangerhar bivirkninger av å skape den samme ressursen flere ganger.
generelt, når en PUT
forespørsel oppretter en ressurs serveren vil svare med en 201
Created
), og hvis forespørselen modifiesexisting ressurs serveren vil returnere en 200
OK
) eller 204
NoContent
).
Testing AV EN API med PUT-forespørsler
Testing av En APIs PUT
metoder ligner veldig på testing Av POSTrequests. Men nå som vi vet forskjellen mellom de to(idempotency), kan VI lage API-tester for å bekrefte denne oppførselen.
Sjekk ETTER DISSE tingene når DU tester PUT-forespørsler:
- gjentatte ganger kaller en
PUT
forespørsel returnerer alltid det samme resultatet (idempotent). - den riktige statuskoden returneres når du oppretter og oppdaterer ressurs (f. eks.
201
eller200
204
). - etter oppdatering av en ressurs med en
PUT
forespørsel, enGET
forespørsel omat ressursen skal returnere de riktige dataene. -
PUT
forespørsler skal mislykkes hvis ugyldige data leveres i therquest-ingenting skal oppdateres .
PATCH
a PATCH
forespørsel er en av DE mindre kjente HTTP-metodene, men jeg inkluderer det så høyt i listen siden DET ligner PÅ POST andPUT. Forskjellen med PATCH
er at du bare bruker partialmodifications til ressursen.
forskjellen MELLOM PATCH og PUT, er thataPATCH forespørsel er ikke-idempotent(likea post forespørsel).
for å utvide på delvis endring, si AT DU ER API har en/users/{{userid}}
endepunkt, og en bruker har et brukernavn. Med apatch-forespørsel trenger du kanskje bare å sende det oppdaterte brukernavnet inn i forespørselsorganet-i motsetning TIL POST og PUT som krever fulluser-enheten.
Testing EN API MED PATCH forespørsler
Siden PATCH
metoden er så simlar Å LEGGE inn og SETTE, mange av de samme testteknikker gjelder. Det er fortsatt viktig å validere OPPFØRSELEN TIL API-endepunkter som godtar denne metoden.
hva du skal se etter når du tester PATCHFORESPØRSLER:
- en vellykket
PATCH
forespørsel skal returnere en2xx
statuskode. -
PATCH
forespørsler skal mislykkes hvis ugyldige data leveres i therequest-ingenting skal oppdateres .
semantikken TIL PATCHFORESPØRSLER vil i stor grad avhenge av den spesifikke API-EN du tester.
SLETT
DELETE
metoden er akkurat som den høres ut: slett ressursen påden angitte NETTADRESSEN. Denne metoden er en av de vanligste I RESTfulAPIs, så det er godt å vite hvordan det fungerer.
Testing AV EN API med SLETTEFORESPØRSLER
DELETE
forespørsler bør testes tungt siden de vanligvis fjerner data fra en database. Vær forsiktig når du tester SLETTEMETODER, gjør at du bruker riktig legitimasjon og ikke tester med realuser-data.
et typisk testtilfelle for EN SLETTEFORESPØRSEL vil se slik ut:
- Opprett en ny bruker med en
POST
forespørsel til/users
- med bruker-id returnert fra
POST
, lag enDELETE
forespørsel til/users/{{userid}}
- en påfølgende
GET
forespørsel til/users/{{userid}}
skal returnere en 404 ikke funnet statuskode.
i tillegg sender EN SLETTEFORESPØRSEL til en ukjent ressurs shouldreturna non – 200 statuskode.
HODE
HEAD
metoden er nesten identisk med GET
, unntatt utenresponse kropp. Med andre ord, hvisGET /users
returnerer en liste over brukere, vilHEAD /users
gjøre samme forespørsel, men vil ikke få tilbake listen over brukere.
HEAD forespørsler er nyttige for å sjekke hva EN GET forespørsel willreturn før du faktisk gjør EN GET forespørsel – som beforedownloading en stor fil eller responsebody. Lær mer om HODEFORESPØRSLER på MDN.
det er verdt å påpeke at ikke alle endepunkter som støtter GETwill støtter HEAD – det er helt avhengig AV API du tester.
Testing AV EN API med HODEFORESPØRSLER
Å Lage API-forespørsler med HEAD
metoder er faktisk en effektiv måte å bare verifisere at en ressurs er tilgjengelig. Det er goodpractice å ha en test for HODET forespørsler overalt du har en testfor FÅ forespørsler(så LENGE API støtter det).
Sjekk disse tingene når du tester EN API med HODEFORESPØRSLER:
- Bekreft og sjekkhttp-overskrifter returnertfra EN HODEFORESPØRSEL
- gjør påstander mot statuskoden TIL hodeforespørsler
- Testforespørsler med ulike spørringsparameterr for å sikre APIresponds
Et annet nyttig tilfelle for HEAD
forespørselerisapi røyk testing-lag EN HODEFORESPØRSEL mot HVERT API-endepunkt for å sikre at DE tilgjengelig.
ALTERNATIVER
Sist Men ikke minst har vi OPTIONS
forespørsler. ALTERNATIVER forespørsler eren av mine favoritter, men ikke så mye brukt som de andre HTTPmethods. I et nøtteskall bør EN FORESPØRSEL om ALTERNATIVER returnere data som beskriver hvilke andre metoder og operasjoner serveren støtter på DEN oppgitte NETTADRESSEN.
OPSJONSFORESPØRSLER er mer løst definert og brukt enn de andre,noe som gjør dem til en god kandidat til å teste for fatale API-feil. Hvis anAPI ikke forventer EN OPSJONSFORESPØRSEL, er det godt å sette et test kasein-sted som bekrefter sviktende oppførsel.
Testing AV EN API med ALTERNATIVER forespørsler
Testing av en OPTIONS
forespørsel er avhengig av webtjenesten; uansett om det ikke støtter det, og hva som skal returnere, vil definehvordan du skal teste det.Kontroller først og fremst svarhodene og statuskoden for forespørselen
Flere ressurser
det jeg har diskutert ovenfor, er bare et utgangspunkt for å grave i toHTTP-metoder og teste ulike ressurser i EN API. I den virkelige verden Er Apier ikke så strukturerte someksemplene ovenfor. Dette gjør testing ulike metoder mot En APIan effektiv måte å finne uventede bugs.