django 使用 graphQL 详解

2018-02-22 18:32:48 +08:00
 ns2250225

Github

Blog

为什么不用 REST

GraphQL 的关键语句

3781 次点击
所在节点    分享创造
7 条回复
111111111111
2018-02-22 18:39:29 +08:00
rest 的版本控制问题是一个痛?是否愿意分享一下遇到哪些痛
ns2250225
2018-02-22 20:04:37 +08:00
@111111111111 就是写接口的时候,要带上 v1,v2 等的版本号。。。
tomczhen
2018-02-22 22:39:53 +08:00
REST 主要的问题一个是数据有冗余,一个是请求多级关系数据查询是串行——必须先获取上级资源,再来获取子资源,版本基本上就三个方式:

URI - https://example.com/api/v2/foo
Custom Header - api-version: 2
Accept Header - Accept: application/vnd.app.v2+json

URI 直观,简单易懂,但是违背了同一个资源 URI 不变这个原则。放 Header 里面不直观,对队友有要求,(个人理解)自定义头和 Accept 头的区别是 Accept 更符合 Http 协议的设计。

REST 的优势在于 URI 明确,资源权限控制清晰。GraphQL 对外是灵活而强大,不过解决权限、性能问题对于后端而言复杂度是高于 REST 的——毕竟 REST 成熟的框架更多。
freemagico
2018-02-24 22:21:31 +08:00
学习了。请问楼主 graphQL 的多表查询要怎么实现呢?感觉 graphQL 的 schema 设计比较关键,我研究了一下还没什么心得……
ns2250225
2018-02-25 09:24:04 +08:00
@freemagico 关键是 model 里面定义好表的关系,然后直接查询的时候,同时查多张表的数据就好了
ns2250225
2018-02-25 09:32:06 +08:00
@freemagico 像这样:
query {
allBooks {
title{
title
}
author{
name
}
}
allTitles {
title
}
allAuthors{
name
}
}
freemagico
2018-02-25 23:36:21 +08:00
@ns2250225 感谢回复,那其实多表查询对于后端来说依然是一样的查询过程吧,时间上并没有节省,只是前端接口定义的时候比较易懂。这么理解对嘛?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/431717

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX