Da quello che posso dire, vengono forniti i mezzi per convertire un oggetto complesso nel formato HAL corretto. Questo è ovviamente sfruttato nel marshalling degli oggetti nel framework stesso. Resource
e Link
oggetti, eccClient Java per il POST di entità complesse a un servizio REST/HATEOAS di Spring Data
Per il bene di un caso d'uso: Company 1
è uno esistente Company
nel mio sistema. Voglio aggiungere un nuovo Employee
che funziona per Company 1
Di seguito è un esempio Employee
oggetto che riceverai da un servizio basato su Spring Data REST. Spring HATEOAS fornisce anche i mezzi per costruire da soli questi oggetti.
{
"id": null,
"firstName": "bZWthNFk",
"lastName": "GtTnrqka",
"loginId": "zTk5rT",
"active": true,
"_links": {
"company": {
"href": "http://localhost/companies/1";
}
}
}
Tuttavia, questo sembra non lavoro per la pubblicazione l'oggetto. Se ho capito bene, che lo stesso oggetto avrebbe dovuto essere pubblicato come:
{
"id": null,
"firstName": "bZWthNFk",
"lastName": "GtTnrqka",
"loginId": "zTk5rT",
"active": true,
"company": "http://localhost/companies/1"
}
Per quanto posso dire, non ci sono mezzi forniti sia dal progetto di hateoas o dati REST per produrre questo oggetto per la pubblicazione a un servizio HAL valido, tramite RestTemplate
o altri mezzi. In effetti, non riesco a trovare alcun mezzo per inviare prontamente un oggetto complesso senza alcun controllo manuale. Mi sbaglio nell'assumerlo?
Come si può costruire un SDK Java valido per la comunicazione service-to-service che sfrutta i principi di HATEOAS senza questo strumento per gli oggetti POST in modo affidabile?
Per farla breve, desidero pubblicare questo oggetto senza dover serializzare gli URI per le associazioni.
public class Employee {
private Integer id;
@NotNull
private Company company;
private String firstName;
private String lastName;
}
ho creato la seguente richiesta di miglioramento in riferimento a questo:
https://jira.spring.io/browse/SPR-12678
Ciò ha senso :-) Il mio seguito è quello di chiedere come gestireste questa situazione dato un vincolo NotNull sulla società? – bvulaj
@BrandonV It [sembra] (http://stackoverflow.com/questions/22097646/spring-data-rest-2-0-0-release-breaks-code-working-previously-with-rc1#comment33577957_22111435) che tu in realtà dovrebbe essere in grado di pubblicare un oggetto come suggerito, purché si abbia almeno la versione 2.0 di Spring Data REST. – zeroflagL
Sì, so che molto funziona, in realtà, anche se il tuo suggerimento sulla risorsa dell'associazione era anche interessante. La mia preoccupazione è legata agli strumenti che Spring HATEOAS fornisce per interagire con i servizi basati su HAL in questo modo. Facendo questo a mano, o scrivendo il mio personale di marshall per gestire un caso comune, sembra un po 'non intuitivo. – bvulaj