开源摘星计划(WeOpen Star) 是由腾源会 2022 年推出的全新项目,旨在为开源人提供成长激励,为开源项目提供成长支持,助力开发者更好地了解开源,更快地跨越鸿沟,参与到开源的具体贡献与实践中。
不管你是开源萌新,还是希望更深度参与开源贡献的老兵,跟随“开源摘星计划”开启你的开源之旅,从一篇学习笔记、到一段代码的提交,不断挖掘自己的潜能,最终成长为开源社区的“闪亮之星”。
我们将同你一起,探索更多的可能性!
项目地址:https://github.com/weopenprojects/WeOpen-Star
前言
在做一些开源项目时,我们有时会遇到接口定义与实现的问题。因此,本文我们将探讨接口升级的注意事项。本文来源于OpenMLDB中对builtin函数的实现与更新,以此记录如下。同时,本文也适用于Femas微服务框架,但由于在调研后发现Femas的难度较高,因此将目前的记录如下,感兴趣的伙伴可以积极参与哦。
Femas 是腾讯云开源的云原生微服务一站式管理框架,聚焦微服务运行时,提供给多框架统一服务发现、南北及东西流量治理、服务可观测、配置管理等一站式微服务管控能力,解决企业微服务架构转型中异构框架复用难、 激增流量管控难、排障恢复耗时长等核心问题,帮助开发者将云原生中间件生态无缝集成到业务系统中,让企业能快速便捷的构建基于云原生的大规模分布式架构。
例子
举例我们需要对微服务进行开源接口升级,首先我们需要熟悉使用方式与旧版API,具体的API将以客户端为主导,并添加相对应的文档。
注意事项
具体的,在实际写项目时,有以下经验值得分享。在编写API时应当注意: (1)制定好API规范和确定好需求。开发前制定好规范和流程。 (2)尽量精简返回的数据。在之前的经验中,经常出现一些不安全性。例如数据库的接口select * from table where prop=data。这一接口没有注意到返回数据是要开销和要流量的。使用指定属性能大幅度的提高性能。 (3)API的返回或请求的参数类型要严格。要注意参数的类型,如整型的数据一定要转为int,因为有些开发语言如java、object-c语言对数据类型比较严格,类型不对会照成闪退。 (4)接口文档必须要写而且要写好。按照模块写,要书写规范,最好的格式是:接口请求地址;请求参数(包括参数名、类型、是否必填);测试参数举例;返回参数(参数名,并注明每个参数的含义)。如此即使以后项目很大,以不会照成维护困难的问题。 (5)一定要确保代码的正确性。要验证确保代码正确无误,生成环境中要屏蔽掉错误信息,避免头部有额外的输出,照成返回的json等数据解析失败而导致闪退等。 (6)不要随意更改版本的旧接口。一旦发布,有人使用之后,接口就不要乱修改了。升级也是,修改要在保证接口原有结构之上进行额外的扩展,否则会导致调用旧版接口出现bug。 (7)注意接口的安全。安全高于一切,必须要保证接口的安全。电话号码等敏感信息在传输的过程中一定要加密,否则可能会被别人抓包到。拿取用户信息的接口一定要验证权限,以防止接口被恶意调用,泄密用户信息,甚至篡改信息。
目标
具体的,类似API的开源目标可以有两部分构成: (1)接口的风格确定。 (2)以新风格规范完整准确的实现以客户端维度进行查询的API。 (3)准确无误的添加新API的文档。
本文总结
注意,文档在开源项目中十分有用。在开源过程中,应当时刻注重文档的规范与设计。从而避免问题和日后修改的麻烦。