使用 _embed 让检索记录中携带上关联的子资源;使用 _expand 让检索记录中携带上关联的父资源;还可以获取或创建嵌套资源(默认为一级嵌套,可以通过添加 自定义路由 来实现更多层级)
以下是连表查询的示例:
GET /posts?_embed=comments # 请求包含评论的帖子
GET /posts/1?_embed=comments # 请求包含评论的特定帖子(ID为1)
GET /comments?_expand=post # 请求包含帖子的评论集合
GET /comments/1?_expand=post # 请求包含帖子的特定评论(ID为1)
GET /posts/1/comments # 获取特定帖子(ID为1)的评论列表
POST /posts/1/comments # 在特定帖子(ID为1)下创建一个新的评论
1. GET /posts?_embed=comments: 请求包含评论的帖子。
访问路径:
https://jsonplaceholder.typicode.com/posts?_embed=comments
2. GET /posts/1?_embed=comments: 请求包含评论的特定帖子(ID为1)。
访问路径:
https://jsonplaceholder.typicode.com/posts/1?_embed=comments
3. GET /comments?_expand=post: 请求包含帖子的评论集合。
访问路径:
https://jsonplaceholder.typicode.com/comments?_expand=post
4. GET /comments/1?_expand=post: 请求包含帖子的特定评论(ID为1)。
访问路径:
https://jsonplaceholder.typicode.com/comments/1?_expand=post
5. GET /posts/1/comments: 获取特定帖子(ID为1)的评论列表。
访问路径:
https://jsonplaceholder.typicode.com/posts/1/comments
6. POST /posts/1/comments: 在特定帖子(ID为1)下创建一个新的评论。
fetch('https://jsonplaceholder.typicode.com/posts/1/comments', {
method: 'POST',
body: JSON.stringify({
name: 'rtool.cn name',
email: 'rtool.cn email',
body: 'rtool.cn body',
}),
headers: {
'Content-type': 'application/json; charset=UTF-8',
},
})
.then((response) => response.json())
.then((json) => console.log(json));