Il nostro codice JavaScript / Vue frontend fa uso di un numero di endpoint REST "interni", che sono implementati in Java usando Jersey / jax-rs.
Abbiamo una specifica "informale" che elenca le diverse operazioni di REST e descrive i "bean" che sono passati in / out. Sul lato Java, abbiamo classi bean diverse e usiamo gson per trasformare le stringhe JSON in ingresso in oggetti Java.
Ultimamente, ho capito che la nostra attuale configurazione sul lato Java ignora i campi di bean sconosciuti. Quindi, quando il lato JS fornisce un campo che gson non può mappare su un campo di una classe di bean Java, non accade nulla.
Da un lato, questo comportamento sembra conveniente, ad esempio consente al lato JS di fare questo:
- chiamando un GET dal back-end, ricevendo un'istanza di qualche X bean
- aggiungendo altre informazioni a quell'oggetto, per poi inviarlo come bean Y su una richiesta PUT
D'altra parte, dal punto di vista del backend tipizzato staticamente, è semplicemente sbagliato ignorare i dati in arrivo.
La mia domanda: ci sono migliori pratiche o schemi specifici che si applicano qui? Ci sono buoni argomenti tecnici per consentire sempre i campi "sconosciuti", o per proibirli sempre, e "fallire" le richieste usando campi sconosciuti?