![]() |
Frage zu Rest-API-Design
Ich biete per Http GET Daten zum Auslesen an.
Für GET ![]()
Code:
Für GET
{
"system": { "softwareVersion": "1.0.0", "localClock": "2020-12-31T19:31:00.000" }, "control": { "isEnabled": true, "isInTurboMode": false }, "order": { "orderNumber": "ABC \/ 123", "limits" : { "upper": 1.25, "lower": 0.8 } } } ![]()
Code:
Soweit noch ganz unspannend.
{
"upper": 1.25, "lower": 0.8 } Nun möchte ich per Http PUT und Http PATCH Änderungen zulassen. Es macht hier nur Sinn bestehendes zu modifizieren, nicht etwas neues hinzuzufügen (daher kein Http POST). Jetzt stutze ich etwas, was erwartet der typische Benutzer? Angenommen er möchte order/limits/lower ändern. Mir fallen so viele Dinge ein die man tun könnte:
Code:
oder
Http PATCH http://localhost/api/order/limits
{ "lower": 0.5 }
Code:
oder
Http PATCH http://localhost/api/
{ "order": { "limits": { "lower": 0.5 } } }
Code:
oder
Http PUT http://localhost/api/order/limits
{ "upper": 1.25, "lower": 0.5 }
Code:
Was ist das üblichste? Ist das letzte überhaupt gültig?
Http PUT http://localhost/api/order/limits/lower
0.5 |
AW: Frage zu Rest-API-Design
den Unterschied zwischen PUT und PATCH hast DU ja schon richtig. Hier nochmal erklärt
![]() Ansonsten wären meiner Meinung nach Deine Beispiel 1 und 3 richtig |
AW: Frage zu Rest-API-Design
Ich kenne deinen API use-case nicht, aber die Frage stellt sich: Muss man alles ändern können, oder gibt es nur bestimmte Sachen die man ändern kann?
Wenn man nur bestimmte Sachen ändern können soll (lower limit, aber nicht upper limit) dann biete auch nur das an. (Also keinen Patch Endpunkt) Nebenbei würde ich dir noch GraphQL ans Herz legen, falls das ein guter Fit ist. (Nicht einfach REST nutzen, weil das das erste Projekttemplate ist) ;-) |
AW: Frage zu Rest-API-Design
|
AW: Frage zu Rest-API-Design
Zitat:
|
AW: Frage zu Rest-API-Design
Was so ein „a“ nicht alles ausmachen kann :)
|
AW: Frage zu Rest-API-Design
Mit fällt bei REST-Schnittstellen immer mehr auf, dass
![]() Ist auf jeden Fall mal ein Blick wert. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:30 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz