Una cosa che non capisco quando si utilizza ControllerLinkBuilder con methodOn caratteristica è che cosa siete supponiamo di fare quando il controller ha firma del metodo in questo modo:primavera hateoas ControllerLinkBuilder con methodOn
public HttpEntity<ResourceSupport> update(@PathVariable(USER_ID) Long userId, @Valid @RequestBody UserUpdateRequest userUpdateRequest, BindingResult bindingResult)
Così ogni volta che Desidero utilizzare il metodo , come compilare gli spazi vuoti come UserUpdateRequest argomento e BindingResult (utilizzo il risultato del binding per gestire le eccezioni di richiesta errate con @Controller Advice e JSR 303 per rendere i messaggi di output leggibili dall'uomo).
Quando desidero uso fuori dalla molla di scatola hateoas ControllerLinkBuilder per più facilità con methodOn finisco per scrivere qualcosa di simile (mi dispiace non so se questo non si ritorcerà contro, ma il codice non sembra confortante):
resource.add(linkTo(methodOn(UserController.class).update(userId, null, null)).withSelfRel());
Naturalmente posso omettere la methodOn parte e basta usare linkto che poi mi richiede di giocare la costruzione del percorso.
È appropriato passare semplicemente null ref? Inoltre come è conveniente utilizzare methodOn come se si decide di rimuovere diciamo: BindingResult o aggiungere qualcosa di simile HttpServletRequest per la firma del metodo di controllo in modo che la primavera mi poteva passare ulteriori informazioni sulla richiesta se volevo registrare un indirizzo IP per qualche motivo di sicurezza. Ciò richiederebbe di andare a modificare la parte di costruzione del collegamento utilizzando il metodo On.
Un'altra domanda che è po 'mi boggling è dire passo davanti a un arbitro per legittimo methodOn come userUpdateRequest riempito con i dati - non che i dati supponiamo di andare da nessuna parte con il link generato? Ho visto alcuni Hypermedia che includono insieme a rel e href un corpo di ciò che si passa - è possibile con Spring HATEOAS ed è una buona pratica creare collegamenti con payloads pronti per pubblicare/mettere in essi?
Ma tornando alla ControllerLinkBuilder utilizzando solo linkto metodo costruzione di legami con .slash ("...") - è potenzialmente meno manutenzione costosa?
Nella pratica quotidiana cosa consiglieresti e cosa pensi della costruzione di link? Forse qualcuno potrebbe fornire consigli/consigli professionali.
Grazie,