aktualisieren Es ist dies MongoBean: SuperBeanTeilfelder REST API
class SuperBean extends MongoBaseBean{
private String id;
private String title;
private String parent;
//And getters, setters
}
benötigen, ist ein Update-API zu schreiben, die zum Durchführen Teilattribute Aktualisierung der Lage ist. Ein gängiger Ansatz, der sowohl im Web als auch von meinen Kollegen zu hören ist, besteht darin, die Felder in der Anfrage auf Null zu prüfen und update, wenn nicht null. Was aber, wenn die Aktualisierungsanforderung für den Wert lautet, der auf Null aktualisiert werden soll?
Nach einigen Diskussionen kamen wir mit drei Ansätzen bis:
Set Standardwert für das Feld in der Bohne. Daher wird dies anstelle eines Nicht-Null-Elternfeldes, wenn es $ in der Anfrage nicht enthält, für die Aktualisierung in Betracht gezogen.
class SuperBean extends MongoBaseBean{ private String id; private String title; private String parent = "$"; //And getters, setters }
Lassen Sie die Aktualisierung API-Implementierung eine Karte akzeptieren. Die tatsächliche Bean wird abgerufen und alle Felder, die in der Anforderungszuordnung vorhanden sind, werden aktualisiert.
@Post public SuperBean updatePartial(Map<String,Object> dataObject) {}
Lassen Sie die Update-API DTO akzeptieren, die 2 Karten enthält. Eine für alte Werte, andere für neue Werte. Dies kann in Szenarios von Vorteil sein, in denen das Update nur durchgeführt werden muss, wenn die Datenbank die Werte enthält, die in oldDataObj gesendet wurden. Dies erhöht jedoch die Nutzlastgröße.
class SuperBeanUpdateDTO { private Map<String, Object> oldDataObj; private Map<String, Object> newDataObject; //getters, setters } @Post public SuperBean updatePartial(SuperBeanUpdateDTO updateDTO) {}
Welche Faktoren sollten eine dieser Ansätze in Betracht gezogen werden, um zu wählen? Gibt es einen anderen besseren Weg, dieses Problem anzugehen?