( enpassant | 2020. 04. 06., h – 11:35 )

Köszi a visszajelzést!

Példán én is gondolkodtam, tervezem is. Jó lenne egy már meglévő példa, amit már mások megcsináltak REST API-val.
Szívesen veszek ötleteket, hogy mi legyen a példa. Meglévő példa azért lenne jó, mert összehasonlíthatóvá válik.

Ha nem linkeket küldesz, akkor az nem RESTful a definíció szerint, de a legtöbben így csinálják, és sajnos a nagy cégek is. Így, ha velük kell kommunikálni, akkor kénytelen vagy Te is olyat csinálni.
Szóval az nem RESTful, de azért nem lehet azt mondani, hogy rossz lenne, csak lehetne annál jobban is csinálni.

Igen, nincs kifejtve, hogy mi a rossz a POST-tal, ezt is tervezem majd részletesen belerakni.
Röviden: a PUT az idempotens, a POST nem az.
Emiatt a PUT-tal, ha megfelelően csinálod (ezt is majd kifejtem), akkor tudod biztosítani, hogy a felveendő elem létrejöjjön és csak egy példányban jöjjön létre. A POST-tal ezt nem tudod garantálni.
Akkor lehet gond, ha elküldesz egy üzenetet, hogy vegye fel az új elemet, de nem érkezik válasz (pl. timeout).
Ilyenkor a küldő nem tudja, hogy létrejött-e az erőforrás vagy sem.
PUT esetén újraküldöd, mivel idempotens, ezért nem gond, ha már felvette, nem veszi fel újra, max felülírja ugyanazt (de ez is elkerülhető).
POST esetén ha újraküldöd, akkor ha már felvette, akkor felvesz mellé még egyet. Ha nem küldöd újra, akkor meg azt sem tudod, hogy létrejött-e, ha igen, akkor mi lett az ID-je.
Ezen a problémán POST esetén nem tudsz javítani sehogy sem.