W moim projekcie mam dwa modele domen. Jednostka nadrzędna i podrzędna. Rodzic odwołuje się do listy uprawnień dziecka. (Post i Komentarze) Oba podmioty mają swoje wiosenne dane JPA CrudRepository<Long, ModelClass>
, które są wyeksponowane jako operacje HTTP GET i PUT działające poprawnie i zwracają ładną reprezentację HATEOS tych modeli.Tworzenie nowej jednostki nadrzędnej, która odwołuje się do już istniejącej jednostki podrzędnej w repozytorium danych sprężynowych/HATEOAS
Teraz potrzebuję specjalnego punktu końcowego REST "utwórz nowego rodzica, który odwołuje się do jednego lub więcej już istniejących elementów potomnych". Chciałbym opublikować odniesienia do dzieci jako text/uri liście, że przechodzą w organizmie wniosku jak ten:
POST http://localhost:8080/api/v1/createNewParent
HEADER
Content-Type: text/uri-list
HTTP REQUEST BODY:
http://localhost:8080/api/v1/Child/4711
http://localhost:8080/api/v1/Child/4712
http://localhost:8080/api/v1/Child/4713
Jak zaimplementować ten odpoczynek końcowy? To, co starałem dotąd:
@Autowired
ParentRepo parentRepo // Spring Data JPA repository for "parent" entity
@RequestMapping(value = "/createNewParent", method = RequestMethod.POST)
public @ResponseBody String createNewParentWithChildren(
@RequestBody Resources<ChildModel> childList,
PersistentEntityResourceAssembler resourceAssembler
)
{
Collection<ChildModel> childrenObjects = childList.getContent()
// Ok, this gives me the URIs I've posted
List<Link> links = proposalResource.getLinks();
// But now how to convert these URIs to domain objects???
List<ChildModel> listOfChildren = ... ???? ...
ParentModel newParnet = new ParentModel(listOfChildren)
parentRepo.save(newParent)
}
Reference/Podobne https://github.com/spring-projects/spring-hateoas/issues/292
Uwaga: wiem, w jaki sposób mogę dodawać elementy do listy dzieci poprzez ekspozycje punktów końcowych wiosenno-hateoas ed przez RepositoryRestResource. Tam mogę utworzyć relację podrzędną parnet poprzez POSTing text/uri-list jak opisano tutaj: https://stackoverflow.com/questions/26259474/how-to-add-elements-in-a-many-to-many-relationship -via-resrings-repositoryrestr? rq = 1 Ale chcę wiedzieć, jak to zrobić we własnym niestandardowym punkcie końcowym odpoczynku. – Robert
Istnieje wiele bardzo podobnych pytań. Ale moim szczególnym przypadkiem jest: chcę utworzyć _NEW_ podmiot nadrzędny, który będzie powiązany z już uprawnieniami dziecka _EXISTING_. – Robert
Jestem trochę zdezorientowany, ale jak dziecko może istnieć przed rodzicem? To tak, jakby utworzyć komentarz do postu, który jeszcze nie istnieje. Zwykle starasz się również unikać czasownika w punkcie końcowym zasobu, ponieważ wywołuje on jakiś punkt zapalny RPC w punkcie końcowym, ale w celu WYREGULOWANIA nie ma znaczenia, czy jest tam, czy nie. –