50% kedvezmény minden terv, korlátozott idő. Kezdés: $2.48/mo
11 perc van hátra
Webes és üzleti alkalmazások

PUT vs PATCH REST API-módszerek: melyiket válassza?

Nick Silver By Nick Silver 11 perc olvasás Frissítve 2025. március 5-én
A PUT és a PATCH a két legfontosabb HTTP-módszer

A RESTful API-tervezésben a PUT és a PATCH két HTTP-módszer, amelyet a kiszolgálón lévő erőforrások frissítésére használnak, de a különbség a PUT és a PATCH között a REST API-kban abban rejlik, hogy hogyan hajtják végre a frissítéseket, és melyik forgatókönyv a legmegfelelőbb. Mindkét módszert a meglévő adatok módosítására tervezték, de a REST API-ban lévő PUT és PATCH különbségek megértése segíthet a fejlesztőknek a legmegfelelőbb választásban a végrehajtandó frissítés jellege alapján. Ebben a blogbejegyzésben megvizsgáljuk a PUT és a PATCH különbséget a REST API-ban, a PATCH és a frissítés REST vitájára összpontosítva, hogy mikor kell használni őket, és útmutatást adunk a megfelelő módszer kiválasztásához a különböző használati esetekhez.

 

 

Mi az a PUT a REST API-kban?

Ahhoz, hogy megértsük a különbséget a PUT és a PATCH között a REST API-kban, először is tudnunk kell, mi az a PUT. alapján 9.6 RFC 2616 szakasz, a REST API PUT metódusa azt kéri, hogy a zárt entitást a mellékelt Request-URI alatt tárolják.

Ha a Request-URI egy már létező erőforrásra hivatkozik, akkor a bezárt entitást az eredeti kiszolgálón található módosított változatának KELL tekinteni. Ha a Request-URI nem mutat egy meglévő erőforrásra, és ezt az URI-t a kérelmező felhasználói ügynök képes új erőforrásként meghatározni, akkor az eredeti kiszolgáló létrehozhatja az erőforrást ezzel az URI-val.

Más szavakkal, a PUT metódus egy teljes erőforrás frissítésére szolgál a kiszolgálón. Ez teszi a PUT-ot „teljesebb” frissítéssé, amelyet gyakran akkor használnak, ha az erőforrás teljes cseréjére van szükség.

 

Tehát a PUT a legjobb a következő felhasználási esetekben: 

  • Teljes erőforrás frissítése (pl. felhasználói profil frissítése minden új információval).
  • Egy teljes elem vagy rekord cseréje.
  • Amikor az erőforrás azonossága egyértelmű, és az adatait teljesen frissíteni kell.

 

Olyan rendszerekben, mint pl Elaszticsearch, idempotens műveletekre van szükség az adatok konzisztenciájának garantálásához. Például egy dokumentumnak az Elasticsearch programban a PUT használatával történő frissítése biztosítja, hogy ugyanaz a kérés nem kívánt mellékhatások nélkül megismétlődjön.

 

Mi az a PATCH a REST API-kban?

Most, hogy foglalkoztunk a PUT-val a REST API-kban, nézzük meg, mi a PATCH a REST API-kban, és hogyan működik, mielőtt összehasonlítanánk a PUT-t a PATCH-val a REST API-kban. pontjában meghatározottak szerint RFC 5789, a PATCH metódus a REST API-ban azt kéri, hogy a kérelem entitásban leírt változtatások készletét alkalmazzák a Request-URI által azonosított erőforrásra.

Ez igazodik a PUT vs PATCH REST API megkülönböztetéshez, ahol csak azokat az adatokat küldi el, amelyeket módosítani kell, és a kiszolgáló ezeket a módosításokat a meglévő erőforrásra alkalmazza anélkül, hogy a teljes erőforrást megváltoztatná. A fejlesztők gyakran készítenek javításokat ezeknek a növekményes változtatásoknak a megjelenítésére, minimális adatátvitelt és hatékony frissítéseket biztosítva.

 

Ezért a REST API PATCH metódusa jobban megfelel a következő felhasználási esetekben: 

  • Egy erőforrás mezőinek csak egy részhalmazának frissítése (például a felhasználó e-mail címének vagy telefonszámának megváltoztatása). A PATCH API példája magában foglalhatja az új e-mail elküldését, és a többi mezőt érintetlenül hagyja.
  • A teljesítmény javítása az adatterhelés minimalizálásával.
  • Ha egy erőforrást fokozatosan szeretne frissíteni, nem pedig teljesen lecserélni.
  • Hozzon létre javításokat az egyes mezők módosításaihoz, például a felhasználó e-mail-címének módosításához, anélkül, hogy a nem kapcsolódó adatokat érintené.

Olyan platformokhoz, mint pl fej nélküli CMS amelyek gyakran bonyolult tartalomstruktúrákat kezelnek, a PATCH használatával kisebb frissítésekhez – például egyetlen mező módosításához – csökkenthető a szerver terhelése és javítható a teljesítmény.

Ha ezt a két módszert lefedi, tisztességes elképzeléssel kell rendelkeznie arról, hogy mi a PUT és a PATCH a REST API-kban. Mielőtt azonban rátérnénk a PUT és a PATCH közötti különbségre a REST API-kban, beszélnünk kell az Idempotenciáról ebben a két módszerben.

 

Idempotencia a PUT vs Patch-ben a REST API-kban

A REST API-kban az idempotencia egy művelet azon tulajdonságára utal, amely többszöri megismétlése ugyanazzal a bemenettel ugyanazt az eredményt eredményezi. Ez azt jelenti, hogy ugyanazon kérés többszöri végrehajtása ugyanolyan hatással kell, hogy legyen a szerverre, függetlenül attól, hogy hányszor kerül végrehajtásra. Ez fontos az API stabilitásának és kiszámíthatóságának biztosításához. De hogyan kapcsolódik ez a PUT és PATCH különbséghez a REST API-ban?

 

PUT módszer és idempotencia

A PUT metódus a REST API-ban mindig idempotens, mert úgy tervezték, hogy a teljes erőforrást lecserélje egy megadott URI-n a kérésben megadott adatokkal. Más szóval, ha többször hajt végre egy PUT-kérést ugyanazokkal az erőforrásadatokkal, az eredmény mindig ugyanaz lesz.

Miért a PUT Idempotens? Amikor PUT kérést ad le, lényegében azt mondja a kiszolgálónak: „Ez az a teljes és pontos állapot, amelyet szeretnék ehhez az erőforráshoz.” Akár egyszer, akár többször adja ki a PUT kérést, az eredményül kapott erőforrás mindig azonos lesz.

Vegyük például azt a forgatókönyvet, amikor frissíti a felhasználó e-mail címét. Ha többször is végrehajtja ugyanazt a PUT kérést, az eredmény nem változik, mivel az erőforrást minden alkalommal ugyanazok az adatok helyettesítik.

 

Példa:

PUT /users/1{"felhasználónév": "john_doe","e-mail": "[email protected]"}

 

Ha ezt a kérést többször is elküldi, az eredmény mindig ugyanaz lesz:

{"felhasználónév": "john_doe","e-mail": "[email protected]"}

 

Még ha a felhasználó adatai már ilyenek, a kérés újbóli elküldése nem változtat semmin. Az adatokat ugyanazokkal az adatokkal helyettesíti, így a kérés hatása ugyanaz marad, függetlenül attól, hogy hányszor ismétlődik. Ez teszi a PUT-ot idempotenssé.

 

PATCH módszer és idempotencia

A REST API PATCH metódusa viszont általában szintén idempotens, de nagyobb rugalmassággal. A javítások létrehozásakor ügyeljen arra, hogy a műveletek idempotensek legyenek (pl. érték beállítása), hogy elkerülje az ismételt kérések nem kívánt mellékhatásait. Az, hogy a PATCH idempotens-e, a művelettől és a módosítandó adatoktól függ.

Miért Idempotens a PATCH? PATCH kérések esetén az idempotencia azt jelenti, hogy ugyanazon javítás többszöri alkalmazása ugyanazt az eredményt fogja eredményezni. Ez mindaddig igaz, amíg maga a tapasz nem okoz további mellékhatásokat vagy változásokat, ha ismételten alkalmazzák. Ha továbbra is ugyanazt a javítást alkalmazza ugyanazokkal az adatokkal, az eredménynek az első alkalmazás után változatlannak kell lennie.

Például, ha csak egy felhasználó e-mail-címét frissíti, ugyanazon PATCH kérés ismételt elküldése nem változtatja meg az eredményt az első alkalom után, még akkor sem, ha a kérés többször történik. A felhasználó e-mail címe változatlan marad, és az erőforrás állapota nem változik.

 

PATCH API példa:

PATCH /users/1{"e-mail": "[email protected]"}

 

Ha az e-mail már a [email protected] cím volt, akkor ennek a PATCH-nak újbóli alkalmazása nem eredményez változást, így idempotens lesz.

A PATCH azonban bizonyos esetekben nem idempotens is lehet. Például, ha egy PATCH művelet módosít egy számlálót vagy elemeket ad hozzá egy listához (például növeli a számot vagy hozzáfűzi egy tömbhöz), ugyanazon PATCH ismételt alkalmazása eltérő eredményekhez vezethet. Ez sértené az idempotencia tulajdonságot.

 

Nem idempotens API REST PATCH Példa:

PATCH /számláló/1{"növekmény": 1}

 

Ha ezt a PATCH-et többször alkalmazza, a számláló folyamatosan növekszik, ami minden alkalommal más értékeket eredményez. Ez nem idempotens, mert az eredmény minden alkalmazással változik.

Most, hogy ismeri a lényeget, megtekinthetünk néhány példa forgatókönyvet, hogy jobban megértsük a különbséget a PUT és a PATCH között a REST API-kban.

 

Példaforgatókönyvek: PUT vs PATCH REST API-kban

Az elmélettől eltekintve, nézzük meg a PUT és a PATCH közötti különbséget példákkal, beleértve az idempotens és nem idempotens műveleteket is.

 

1. forgatókönyv: PUT-kérés – Egy teljes erőforrás cseréje

Képzeljen el egy API-végpontot a termékek kezeléséhez egy e-kereskedelmi rendszerben. Frissítenie kell a termék összes részletét, beleértve a nevét, árát és leírását. Ez egy tipikus példa a PUT vs PATCH HTTP metódusra, ahol a PUT a teljes termékerőforrás lecserélésére szolgál.

 

Kezdeti termék:

GET /products/1001{"id": 1001,"name": "Laptop","price": 999.99,"description": "Egy nagy teljesítményű laptop."}

 

Frissíteni szeretné a termék árát és leírását. PUT kérést küld a teljes erőforrással:

PUT kérés:

PUT /products/1001{"id": 1001,"name": "Laptop","price": 899.99,"description": "Akciós nagy teljesítményű laptop."}

 

Ha ezt a PUT kérést egyszer vagy többször adja meg, az eredmény mindig ugyanaz lesz. A termék adatai frissülnek, hogy tükrözzék az új árat és leírást, és minden alkalommal ugyanaz lesz az eredmény. Ez biztosítja a PUT idempotens természetét.

 

Eredmény (PUT-kérés után):

{"id": 1001,"name": "Laptop","price": 899.99,"description": "Akciós nagy teljesítményű laptop."}

 

2. forgatókönyv: PATCH kérés – az erőforrás egy részének frissítése

Most pedig vegyünk egy PATCH kérést a termék részleteinek, például a leírásnak csak egy részének frissítésére. PATCH API példa: Ha módosítani szeretné a termék leírását, de nem az árát, a PATCH a jobb választás. Ennek megvalósításához olyan javításokat kell létrehoznia, amelyek csak a módosítást igénylő mezőket tartalmazzák, például az API REST PATCH példájában található leírást.

 

Kezdeti termék:

GET /products/1001{"id": 1001,"name": "Laptop","price": 999.99,"description": "Egy nagy teljesítményű laptop."}

 

PATCH kérés:

PATCH /products/1001{"description": "Egy könnyű, erős laptop."}

 

Amikor elküldi ezt a PATCH kérést, csak a leírás mező frissül. Ha többször is elküldi ugyanazt a PATCH kérést, a leírás változatlan marad az első frissítés után, így a kérés idempotens.

 

Eredmény (PATCH kérés után):

{"id": 1001,"name": "Laptop","price": 999.99,"description": "Egy könnyű, erős laptop."}

 

Ha újra felhelyezi ugyanazt a PATCH-et, a termékleírás továbbra is ugyanaz marad, mint az első PATCH után. Az eredmény konzisztens, ami a PATCH-ot idempotenssé teszi ebben a forgatókönyvben.

 

3. forgatókönyv: PATCH kérés – nem idempotens működés

Nézzünk egy nem idempotens PATCH műveletet. Tegyük fel, hogy van egy végpont a felhasználó pénztárcaegyenlegének, és növelni szeretné az egyenleget. A PUT és a PATCH közötti különbség példája itt szemléltethető: A PATCH minden alkalommal hozzáad egy értéket az egyenleghez

 

Kezdeti pénztárca:

GET /users/1/wallet{"azonosító": 1,"egyenleg": 100,00}

 

PATCH kérés:

PATCH /felhasználók/1/pénztárca{"növekmény": 50,00}

 

Ez a PATCH kérés 50 dollárral növeli a pénztárca egyenlegét. Ha ezt a PATCH kérést többször elküldi, az egyenleg minden PATCH-mal folyamatosan növekszik, ami minden alkalommal más eredményhez vezet. Ez nem idempotens, mert ugyanazon PATCH ismételt alkalmazása eltérő eredményt eredményez.

 

Eredmény (az első PATCH kérés után):

{"azonosító": 1,"egyenleg": 150,00}

 

Eredmény (a második PATCH-kérés után):

{"azonosító": 1,"egyenleg": 200,00}

 

Itt a PATCH nem idempotens, mert az ugyanazokkal az adatokkal ismételt kérések eltérő eredményeket adnak.

 

Összefoglaló: Főbb különbségek a PUT és a PATCH között a REST API-kban

A legfontosabb különbség a PUT és a PATCH között a REST API-ban az, hogy hogyan kezelik a frissítéseket. A PUT lecseréli a teljes erőforrást, így a hiányzó mezők törlődnek, ami adatvesztéshez vezethet. Ez az oka annak, hogy a fejlesztők javításokat hoznak létre a részleges frissítésekhez – a változatlan mezők felülírásának elkerülése és az adatok integritásának megőrzése érdekében.

Ez hatékonyabbá teszi a PATCH-ot a részleges frissítésekhez. A PATCH API példája az, hogy ha csak egy felhasználó e-mail-címét szeretné frissíteni, a javítások létrehozása csak az e-mail mezőt küldi el, ellentétben a PUT kéréssel, amelyhez a teljes felhasználói adatra lenne szükség.

A PUT esetén a teljes adatterhelésre van szükség. Ez azt jelenti, hogy minden mezőt el kell küldeni, és a hiányzó mezők törlődnek. A PATCH azonban csak a frissítésre szoruló mezőket küldi el, így hatékonyabbá válik, különösen nagy erőforrások esetén, minimális változtatásokkal. A PATCH módszer a REST API-ban célzottabb és kisebb kéréseket tesz lehetővé, csökkentve az adatátvitelt.

A PUT és a PATCH is idempotens. Ez azt jelenti, hogy ugyanazon kérés megismétlése ugyanazt az eredményt fogja eredményezni. A PUT azonban kiszámíthatóbb, mivel a teljes erőforrást helyettesíti. A PATCH csak meghatározott mezők módosítására használva eltérő eredményekhez vezethet attól függően, hogy a kiszolgáló hogyan kezeli a frissítéseket.

Például, ha a PATCH növeli a számlálót, az ismételt kérések eltérő eredményekhez vezethetnek. Mindazonáltal a PATCH API-műveleteket idempotensre is meg lehet tervezni.

Összefoglalva, a PUT és a PATCH különbség a REST API-ban a frissítések természetére vezethető vissza: a PATCH a részleges változtatásokat, míg a PUT a teljes erőforráscserét jelenti. Mindkettő idempotens, de a PATCH bonyolultabb is lehet.

 

Végső gondolatok

Mind a PUT, mind a PATCH alapvető HTTP metódusok a REST API tervezésében, de különböző célokat szolgálnak, ami a REST API PUT és PATCH különbségének lényege. Jelentősen javíthatja az API hatékonyságát, egyértelműségét és funkcionalitását, ha megérti a PUT és a PATCH közötti különbséget a cikkben korábban tárgyalt példákkal. Ha a használati esete alapján a megfelelő módszert választja (PATCH vs frissítés REST), hatékonyabbá, karbantarthatóbbá és felhasználóbarátabbá teheti API-ját. Mindig vegye figyelembe a frissítés jellegét – akár teljes, akár részleges –, valamint a teljesítményre és az adatok integritására gyakorolt ​​hatást, és válassza ki az igényeinek leginkább megfelelő módszert.

Részesedés

Továbbiak a blogból

Olvass tovább.

Az Odoo ismertetőjének képe nagy címsorszöveggel a bal oldalon, az Odoo logóval a jobb oldalon, lebegő alkalmazásfelület-panelekkel körülvéve lágy lila felhő témájú háttérben.
Webes és üzleti alkalmazások

Átfogó Odoo áttekintés: Az Odoo a megfelelő ERP az Ön vállalkozása számára

Az Odoo az egyik legelterjedtebb ERP platform a növekvő vállalkozások számára, aminek egy egyszerű oka van, mégpedig az, hogy egy helyen sokat ígér. Értékesítés, könyvelés, leltár

Jim SchwarzJim Schwarz 11 perc olvasás
A nyílt forráskódú WordPress alternatívák színes színátmenetes háttérrel, asztali monitorral, kódszerkesztővel, elmosódott műszerfali előnézettel és nagy címsorszöveggel a bal oldalon.
Webes és üzleti alkalmazások

A legjobb nyílt forráskódú WordPress alternatívák a fejlesztők számára

A WordPress továbbra is számít, és továbbra is számos webhelyet szolgál ki jól. A beépülő modulok könyvtára több mint 62 000 bővítményt tartalmaz, a témakönyvtár pedig több mint 14 000 ingyenes témát kínál. Tha

Jim SchwarzJim Schwarz 14 perc olvasás
Az Automad vs. WordPress funkcióképe platformlogókkal és egy címsorral, amely azt kérdezi, hogy melyik CMS-fejlesztőknek érdemes választaniuk.
Webes és üzleti alkalmazások

Automad vs. WordPress: alapos összehasonlítás a két legjobb CMS-platform között

Az Automad és a WordPress ugyanazt a feladatot két nagyon eltérő módon oldja meg. Az Automad egy lapos állományú CMS- és sablonmotor, így a tartalom adatbázis helyett fájlokban él, de a WordPress,

Jim SchwarzJim Schwarz 9 perc olvasás

Készen áll a telepítésre? 2,48 USD/hó-tól.

Független felhő, 2008 óta. AMD EPYC, NVMe, 40 Gbps. 14 napos pénzvisszafizetés.