该怎样为Mobile App设计服务器端API

API应该考虑重用的可能性。比如你的例子中有profile和activity两种信息,如果app中明显还有其它需要得到profile信息的地方,应该分割开以达到重用,并且是query on demandAPI是否尽可能满足RESTFUL? 设计API的时候,同时考虑URL尽可能简洁和清晰,也对怎么分割服务器端的功能实现有帮助。比如你的例子中:/profiles/123 + http GET 可以用来得到给定用户\u0026lt;123\u0026gt;的个人Profile/activities/123?limit=20\u0026amp;offset=5 + http GET 可以用来得到给定用户\u0026lt;123\u0026gt;从5开始的20活动信息。性能的改善。信息的更新频率决定cache是否能最大程度改善新能。比如:可能用户的profile很少改动,而activity则经常会更新,如果把这两个放在一起,cache的功能得不到最大发挥。总得来说,可以根据REST API的原则来设计
■网友
上楼只是提到了遵守RESTFULL,针对楼主提出的问题,可以考虑分层设计,来解决面向page,还是面向function的问题。从app的角度,app开发者更希望提供面向page的接口,即一个接口便能获取到该得的数据,而站在后端开发者的角度,更希望提供原子性的数据,而不是拼凑一些乱七八糟的数据。如何平衡两者?分层架构,简单的话,可分为原子数据接口层 和 中间业务层 和 gateway。这三层各提供什么服务呢?原子数据接口层:只出最原子的数据,譬如获取用户信息,获取历史活动,2个接口完全独立,不冲突,不交叉。中间业务层:负责整合,拼凑原子数据接口出来的数据,根据app的需求,把多个原子数据接口整合为一个接口输出给app。 考虑到app发版的成本较高,改动代码后发版周期很长,所以在这层也可以做一些定制化的业务逻辑。gateway:经过中间业务层的数据,必须经过gateway平台作为统一入口和出口,另外gateway由于是整个api的入口,也适合做接口鉴权,防刷,作弊等业务逻辑。由此即可平衡是by function, 还是by page的问题。另外,规范也很重要,如同上楼讲的restfull,restfull百分之八十的功力又在接口命名上。
■网友
可以使用API网关,例如: https://github.com/fagongzi/gatway


    推荐阅读