te-ai întrebat vreodată care este diferența dintre GET
și POST
cereri sau când să folosești PUT
? Nu ești singur. Având o bază de înțelegere a diferitelor metode HTTP, sau verbe, un APIsupports este o cunoaștere utilă atunci când explorarea și testarea API-uri.
În această postare, voi discuta despre modul în care este utilizată fiecare metodă HTTP și cum să le încorporați în testarea API.
metode HTTP
GET
POST
PUT
HEAD
DELETE
PATCH
OPTIONS
- get
- testarea unui API cu cereri GET
- POST
- testarea unui API cu cereri POST
- pune
- testarea unui API cu cereri PUT
- PATCH
- testarea unui API cu cereri de PATCH-uri
- șterge
- testarea unui API cu cereri de ștergere
- cap
- testarea unui API cu cereri de cap
- opțiuni
- testarea unui API cu cereri de opțiuni
- mai multe resurse
get
GET
cererile sunt cele mai comune și utilizate pe scară largă metode în API-uri șisite-uri web. Pur și simplu, metoda GET este utilizată pentru a retrimite datele de la aserver la resursa specificată. De exemplu, să presupunem că aveți un Apicu un /users
punct final. Efectuarea unei cereri GET la acel punct final ar trebuireveniți o listă a tuturor utilizatorilor disponibili.
deoarece o solicitare GET solicită doar date și nu modifică nicio sursă, este considerată o metodă sigură și idempotentă.
testarea unui API cu cereri GET
când creați teste pentru un API, metodaGET
va fi probabil cel mai frecvent tip de solicitare făcută de consumatorii serviciului, decieste important să verificați fiecare punct final cunoscut cu o cerere GET.
la nivel de bază, aceste lucruri trebuie validate:
- verificați dacă o solicitare GET validă returnează un cod de stare
200
. - asigurați-vă că o cerere GET la o anumită resursă returnează correctdata. De exemplu,
GET /users
returnează o listă de utilizatori.
GET este adesea metoda implicită în clienții HTTP, Deci crearea de testepentru aceste resurse ar trebui să fie simplă cu orice instrument pe care îl alegeți.
POST
în serviciile web,POST
cererile sunt utilizate pentru a trimite date către APIserver pentru a crea sau udpate o resursă. Datele trimise către server sunt stocate în corpul solicitat al cererii HTTP.
cel mai simplu exemplu este un formular de contact pe un site web. Când tu completați intrările într-un formular și a lovit trimite, că datele sunt puse încorpul de răspuns al cererii și trimis la server. Acest lucru poate JSON, XML, sau parametrii de interogare (exista o multime de alte formate,dar acestea sunt cele mai comune).
este demn de remarcat faptul că oPOST
cerere este non-idempotent. Itmutează datele de pe serverul backend (prin crearea sau actualizarea aresource), spre deosebire de o GET
cerere care nu se schimba anydata. Iată o explicație excelentă a idempotenței.
testarea unui API cu cereri POST
a doua metodă HTTP cea mai comună pe care o veți întâlni în testele API estePOST
. După cum sa menționat mai sus, POST
cererile sunt utilizate pentrutrimiteți date către serverul API și creați sau actualizați o resursă. SincePOST solicită modificarea datelor, este important să aveți teste API pentru toate metodele dvs. de postare.
iată câteva sfaturi pentru testarea cererilor POST:
- creați o resursă cu o
POST
solicitați și asigurați-vă că un200
codul de stare este returnat. - apoi, faceți o
GET
cerere pentru acea resursă și asigurați-vă că datele au fost salvate corect. - adăugați teste care asigură
POST
cererile nu reușesc cu date incorecte sau prost formatate.
Pentru mai multe idei despre testingscenarios API comune,a verifica afară acest post.
pune
Simlar pentru a posta,PUT
cererile sunt folosite pentru a trimite date către API toupdate sau pentru a crea o resursă. Diferența estechatput cererile sunt idempotent. Thatis, apelarea aceleiași cereri de mai multe ori va produce întotdeaunaacelași rezultat. În schimb, apelarea unei cereri de postare face în mod repetatau efecte secundare ale creării aceleiași resurse de mai multe ori.
în general, atunci când o cerere PUT
creează o resursă serverul va răspunde cu un 201
Created
), iar dacă cererea modifică resursa existentă serverul va returna un 200
OK
) sau 204
NoContent
).
testarea unui API cu cereri PUT
testarea unui APIPUT
metode este foarte similar cu testarea POSTrequests. Dar acum că știm diferența dintre cele două (idempotency), putem crea teste API pentru a confirma acest comportament.
verificați aceste lucruri atunci când testați cererile PUT:
- apelând în mod repetat un
PUT
cererea returnează întotdeauna același rezultat(idempotent). - codul de stare adecvat este returnat la crearea și actualizarea resursei (de exemplu,
201
sau200
204
). - după actualizarea unei resurse cu o
PUT
cerere, oGET
cerere pentrucă resursa ar trebui să returneze datele corecte. -
PUT
cererile ar trebui să eșueze dacă datele nevalide sunt furnizate în therequest-nimic nu trebuie actualizat.
PATCH
aPATCH
cererea este una dintre metodele HTTP mai puțin cunoscute, dar i ‘ minclusiv aceasta mare în listă, deoarece este similar cu post andPUT. Diferența cu PATCH
este că aplicați doar modificări parțiale resursei.
diferența dintre PATCH și PUT, este căapatch cerere este non-idempotent (likea POST cerere).
pentru a extinde modificarea parțială, spuneți că sunteți API are un/users/{{userid}}
punct final și un utilizator are un nume de utilizator. Cu apatch request, poate fi necesar doar să trimiteți numele de utilizator actualizat în corpul cererii-spre deosebire de POST și PUT care necesită entitatea fulluser.
testarea unui API cu cereri de PATCH-uri
deoarecePATCH
metoda este atât de simplă pentru a posta și a pune, se aplică multe dintre aceleași tehnici de testare. Este încă important să validațicomportamentul oricăror puncte finale API care acceptă această metodă.
Ce trebuie să căutați atunci când testați solicitările de corecții:
- un cod de stare
PATCH
de succes ar trebui să returneze un cod de stare2xx
. -
PATCH
cererile ar trebui să eșueze dacă datele nevalide sunt furnizate în therequest-nimic nu trebuie actualizat.
semantica cererilor de corecții va depinde în mare măsură de API-ul specific pe care îl testați.
șterge
DELETE
metoda este exact așa cum sună: ștergeți resursa la URL-ul specificat. Această metodă este una dintre cele mai frecvente în RESTfulAPIs, deci este bine să știți cum funcționează.
testarea unui API cu cereri de ștergere
DELETE
cererile ar trebui să fie puternic testate, deoarece, în general, removedata dintr-o bază de date. Aveți grijă când testați metodele de ștergere, asigurați-vă că utilizați acreditările corecte și nu testați cu datele realuser.
un caz tipic de testare pentru o cerere de ștergere ar arăta astfel:
- creați un utilizator nou cu un
POST
solicitați/users
- cu id-ul de utilizator returnat de la
POST
, faceți unDELETE
cerere la/users/{{userid}}
- o
GET
cerere la/users/{{userid}}
ar trebui să returneze un cod de stare 404 not found.
în plus, trimiterea unei cereri de ștergere către o resursă necunoscută ar trebui să revină la codul de stare non-200.
cap
HEAD
metoda este aproape identică cuGET
, cu excepția cazului în care corpul nu răspunde. Cu alte cuvinte, dacă GET /users
returnează o listă de utilizatori, atunci HEAD /users
va face aceeași solicitare, dar nu va reveni la lista de utilizatori.
cererile de cap sunt utile pentru a verifica ce o cerere GET willreturn înainte de a face de fapt, o cerere GET-cum ar fi beforedownloading un fișier mare sau responsebody. Aflați mai multe despre solicitările HEAD pe MDN.
merită să subliniem că nu orice punct final care acceptă GETwill acceptă HEAD – depinde complet de API-ul pe care îl testați.
testarea unui API cu cereri de cap
efectuarea cererilor API cuHEAD
metode este de fapt un mod eficient de a verifica pur și simplu că o resursă este disponibilă. Este goodpractice de a avea un test pentru cererile de cap oriunde ai un testfor obține cereri (atâta timp cât API-ul acceptă).
verificați aceste lucruri atunci când testați un API cu cereri de cap:
- verificați andcheckhttp anteturi returnedfrom o cerere cap
- face afirmații împotriva codul de stare al cererilor cap
- cereri de testare cu diverse parametri de interogarer pentru a asigura APIresponds
Un alt caz util pentruHEAD
requestsisAPI smoke testing-face o cerere cap împotriva fiecărui punct final API pentru a se asigura sunt disponibile.
opțiuni
nu în ultimul rând avemOPTIONS
cereri. Cererile de opțiuni suntunul dintre preferatele mele, deși nu este la fel de utilizat ca celelalte HTTPmethods. Pe scurt, o cerere de opțiuni ar trebui să returneze datedescriind ce alte metode și operații acceptă serverul la adresa URL dată.
cererile de opțiuni sunt mai vag definite și utilizate decât celelalte,ceea ce le face un candidat bun pentru a testa Erorile API fatale. Dacă anAPI nu se așteaptă la o cerere de opțiuni, este bine să puneți un loc de cazeină de testare care să verifice comportamentul defectuos.
testarea unui API cu cereri de opțiuni
testarea unuiOPTIONS
cererea depinde de serviciul web; dacă nu acceptă acest lucru și ceea ce se presupune că se va întoarce va definecum ar trebui să îl testați.
cum se validează un punct final folosind opțiuni:
- În primul rând, verificați anteturile de răspuns și Codul de stare al solicitării
- puncte finale de testare care nu acceptă opțiuni și asigurați-vă că nu reușesc în mod corespunzător
mai multe resurse
ceea ce am discutat mai sus este doar un punct de plecare pentru săparea metodelor toHTTP și testarea diferitelor resurse ale unui API. De asemenea, presupune un caz în mare parte ideal – în lumea reală, API-urile nu sunt la fel de structurate caexemple de mai sus. Acest lucru face ca testarea diferitelor metode împotriva unui mod eficient APIan de a găsi bug-uri neașteptate.