一个关于 restful api 问题

2017-02-20 23:38:20 +08:00
 huanghua123

我现在希望展示一组 Answer 对象,如下。 其中一个属性ques_id,是外键连到Question表的,我希望在展示Answer时,同时展示Quesitontitle属性。 前后端是通过restful api来通信的。如果按照我的需求,那么每展示一个answer时,我都要去请求获取一个quesiton,这样不是会很耗时间?有什么更好的办法?

1170 次点击
所在节点    问与答
9 条回复
lecher
2017-02-21 00:55:14 +08:00
索性查的时候把答案列表拿出来之后,整个列表的 ques_id 都取出来直接去查一次数据库,把问题描述拿出来,拼成一组完整的数据。消耗不了多少性能,业务还可以简单不少。

纯粹符合范式的数据处理方式有时候兼顾不了性能。适当做做预处理或者缓存性能可以好一些。
huanghua123
2017-02-21 15:19:13 +08:00
@lecher 这样的话 restful api 如何设计
gwind
2017-02-21 15:34:14 +08:00
RESTful 也不是解决一切事情的法宝,总有些 API 需要灵活对待。考虑这个问题的时候,可以加上该 API 调用频率,每次调用系统负载,消耗时间等因素一起分析。就算不 RESTful 也可以的。

另外, GraphQL 是一个很有吸引力的 API 创新,可以看看。
huanghua123
2017-02-21 16:29:27 +08:00
@gwind 也就是说额外设计一个 api ,把 answer 以及 question 的 title 结合到一起返回,这样?
gwind
2017-02-21 16:59:10 +08:00
也可以,主要是考虑必要性,不必拘泥 RESTful
huanghua123
2017-02-21 17:30:51 +08:00
@gwind 嗯,一开始也是想到这样做。但是总觉得不是很完美。
gwind
2017-02-21 17:33:38 +08:00
@huanghua123 理解,我接触 RESTful 过程中,也有这种感觉,后来看过很多优秀的服务 API ,发现他们也有非 RESTful 的,慢慢“理解”了。 :-)
lecher
2017-02-21 19:15:57 +08:00
@huanghua123 我的建议是在 anwser 的 restful 接口里面,就可以把 question 的信息一并拼进去,因为一个单独的 anwser 的信息不足以组成一个完整的信息。
这样只要查询 anwser 的时候,额外去查一下 question 的信息拼起来,前端可以根据实际情况决定是否显示 question 的信息。而且此时你的大部分前端功能都是 anwser 与 question 的信息一起显示,没必要为此单独发两个请求。
huanghua123
2017-02-21 19:23:20 +08:00
@lecher 感谢,明白了。

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

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

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

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

© 2021 V2EX