我目前正在尝试在springdatarest中实现一个多对多关系,这个关系在客户机(reactjs)上使用。为简单起见,我尝试实施本教程:
+---------+ +------------+
| post | | post_tag | +-------------+
+---------+ +------------+ | tag |
| id |---------| post_id | +-------------+
| title | | tag_id |---------| id |
+---------+ | created_on | | name |
+------------+ +-------------+
我用一些示例数据(mysql)进行了测试:
INSERT INTO tag (name) VALUES ('sports');
INSERT INTO post (title) VALUES ('Post One');
INSERT INTO post_tag (post_id, tag_id, created_on) VALUES (1, 1, '2021-02-01');
导航到后 localhost:8081/api/postTags
我遇到这样的情况:
{
_embedded: {
postTags: [
{
createdOn: "2021-02-01T00:00:00.000+00:00",
_links: {
self: {
href: "http://localhost:8081/api/postTags/com.springreact.shop.db.PostTagId@3e1"
},
postTag: {
href: "http://localhost:8081/api/postTags/com.springreact.shop.db.PostTagId@3e1"
},
tag: {
href: "http://localhost:8081/api/postTags/com.springreact.shop.db.PostTagId@3e1/tag"
},
post: {
href: "http://localhost:8081/api/postTags/com.springreact.shop.db.PostTagId@3e1/post"
}
}
}
]
},
_links: {
self: {
href: "http://localhost:8081/api/postTags"
},
profile: {
href: "http://localhost:8081/api/profile/postTags"
}
}
}
posttag的url是无效的,这可能是因为嵌入,有什么想法我可以修复它吗?
另外,由于额外的posttag联合表,我不知道如何在客户机(axios)上发布到客户机。从java开始,首先创建post和tag,然后将它们连接在一起+设置附加字段是有意义的。
// attempt one
axios.post("/api/postTags",
{
postId: '/api/posts/1',
tagId: '/api/tags/1',
createdOn: '2021-01-01'
},
{
headers: {
"Content-Type": "application/json",
}
}
);
// attempt two
axios.put("/api/postTags/1", "/api/posts/1", {
headers: {
"Content-Type": "text/uri-list"
}
});
axios.put("/api/postTags/1", "/api/tags/1", {
headers: {
"Content-Type": "text/uri-list"
}
});
现在我不知道我下一步能做什么。。甚至可以实现吗?我听说embeddedid可能不受支持。另外,我没有找到任何解决方案如何通过端点添加/连接数据。我发现的大多数例子只涉及多对多关系,没有额外的列。
谢谢!
暂无答案!
目前还没有任何答案,快来回答吧!