Ho un usecase in cui dovrei immagazzinare l'intero carico utile da un'API di terze parti oltre al DTO, ad esempio XYZDto, tradotto in.
Ci sono due modi per farlo -
-
Traduci il carico utile in DTO così com'è e quando si tratta di convertirlo in entità corrispondente, farei
entity.apiPayload = convertToJson(dto)
-
Un altro modo è quello di avere un campo di payload in dto stesso e scrivere il mio mapper che esegue quanto segue.
a. Esegui il solito carico utile per la conversione DTO
b. Memorizza il carico utile in DTO
dto.apiPayload = payload
In questo modo il carico utile sarà già pronto durante la conversione in entità e faremo soloentity.apiPayload = dto.apiPayload
Come comprendo, il vantaggio dell'opzione 2 è che non ci sarà una traduzione non necessaria di dto back to payload in fase di runtime.
Voglio capire se c'è un modello di progettazione o una regola che sto rompendo qui. Mi mancano eventuali compromessi tra DTO che hanno la stessa struttura del suo payload rispetto a una struttura diversa?