A HTTP (HyperText Transfer Protocol) egy TCP feletti, alkalmazási rétegbeli protokoll, melyet széleskörben használnak webalkalmazásokban.
Egy példa kérés felépítése a következő:
GET /template/web/img/logo-uni-miskolc.png HTTP/1.1
User-Agent: curl/7.35.0
Host: www.uni-miskolc.hu
Accept: */*
A kérés első sora jelöli meg az elérni kívánt erőforrást. Ezt a kéréshez tartozó, tetszőleges számú fejléc (header) követi, Fejléc: érték
alakban.
Ezt követi az opcionális törzs (body) rész, melyben a kérés teljesítéséhez szükséges adatokat helyezhetünk el tetszőleges formátumban (pl. egy új felhasználó adatait JSON formátumban).
A leggyakrabban alkalmazott metódusok és szimbolikus jelentésük:
A GET kérés speciális, mert törzs részt nem tartalmazhat. Helyette - amennyiben szükséges - a kéréshez tartozó paramétereket ún. query paraméterekként adhatjuk meg.
Példa: /template/web/img/logo-uni-miskolc.png?time=2020-05-01&thumb=true
A paraméterek név=érték
formában adhatóak meg. A paramétereket egymástól &
jel, az URL-től ?
választja el.
POST, PUT, DELETE kéréseknél opcionálisan a törzs rész is kitölthető.
Például a következő kérés egy felhasználó létrehozására szolgál:
POST /users HTTP/1.1
User-Agent: curl/7.35.0
Host: api.example.com
Accept: */*
Content-Type: application/json
Content-Length: 28
{ "name": "feri", "gender": "male", "age": 15 }
A kliens kéréseire a szerver válaszokat ad. Egy kéréshez legfeljebb egy válasz tartozhat.
A HTTP válasz a következőképpen épül fel:
HTTP/1.1 200 OK
Date: Thu, 18 Mar 2021 13:02:06 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 29
Connection: keep-alive
X-Powered-By: Express
X-Ratelimit-Limit: 1000
X-Ratelimit-Remaining: 999
X-Ratelimit-Reset: 1616072536
Cache-Control: no-cache
Pragma: no-cache
{ "id": 101, "name": "feri", "gender": "male", "age": 15 }
A válasz egyebek mellett tartalmaz egy státuszkódot, ami a művelet sikerességéről ad információt.
Ezt követik a válaszhoz tartozó fejlécek.
A törzs rész opcionális: a fenti válaszban a szerver visszaküldte az adatbázishoz hozzáadott felhasználó adatait.
Az egyes HTTP státuszkódok jelentését a HTTP specifikációja tartalmazza, általánosságban a következők írhatóak le róluk: