需要对外提供一个 Java sdk,现在碰到需要区分生产环境和非生产环境的情况有些搞不定

2020-09-08 22:25:29 +08:00
 b0644170fc
这个 sdk 的主要作用就是帮助客户方便的调用公司的对外 api,做些参数签名的工作。但是需要区分是否是生产环境,如果是用户的生产环境就调用公司生产环境的 api,否则就调用公司测试环境的 api 。

我能想到的就是通过让用户在方法中传入参数来判断是否生产环境,但是这样感觉不好。

我想达到类似 spring 可以直接判断 env 的程度,那么是要让用户在 classpath 下加某个固定的 properties,我的 sdk 去读取 properties 这样吗?还有咩有其它方法?
2588 次点击
所在节点    Java
15 条回复
hallDrawnel
2020-09-08 22:35:18 +08:00
这应该是他们的环境通过配置不同的域名、名字、ip:port 来做,而不是改你的实现吧。
miv
2020-09-08 22:42:16 +08:00
读取环境变量,做区分就好,就像 win 系统里面那些环境变量。启动 SDK 前,需要读取预设的环境变量进行判断
oneisall8955
2020-09-08 23:46:50 +08:00
根据环境,请求地址不同,路由到对应的环境网关
b0644170fc
2020-09-09 00:17:00 +08:00
@hallDrawnel 现在就是想在我的 sdk 上来区分,而不需要用户自己手动设置
supermoonie
2020-09-09 07:56:04 +08:00
楼主真是操碎了心
nutting
2020-09-09 08:35:22 +08:00
你做你就是背锅啊,出问题说不清。肯定是要对方来区分。
nutting
2020-09-09 08:36:49 +08:00
换个说法,如果对方那边很清晰,他改一下不是很容易吗。如果很复杂,需要你根据 ip 判断什么的,那就很容易出差错。
foam
2020-09-09 09:12:11 +08:00
过度封装警告。
某个参数是否要暴露给业务,要看业务是否需要关心该参数。对于 sdk 环境,业务明显需要关心。1,业务可以在他的测试环境调用你的生产环境,用于测试。2,业务只需要关注他传入的参数,就可以明确知道此时 SDK 身处哪个环境。而不用担心改了哪些因变量,导致环境发生了变化。

ps. 更好的做法应该是不区分环境,让他们都调用到你们的生产环境去。当然,如果涉及到金钱等敏感资产的业务,让业务端传参,让他知道是否身处沙箱不是很正常吗。
chocotan
2020-09-09 09:27:10 +08:00
我们接口地址是让调用方自己传的,接口文档中写清楚多个环境的接口地址。
Oktfolio
2020-09-09 09:47:37 +08:00
SDK,创建对象的时候就指定个环境啊。或者 autoconfiguration,在 application.properties/application.yaml 配置。这有什么问题?
securityCoding
2020-09-09 09:53:53 +08:00
你关心环境干嘛....没见过这样的 sdk 哦
zhady009
2020-09-09 09:56:20 +08:00
根据自己分发的 clientId 来区分,在 api 网关转发
wysnylc
2020-09-09 10:08:51 +08:00
sdk 封装业务那就不叫 sdk
dogfeet
2020-09-09 10:27:14 +08:00
接过大量 SDK,也开发过一些。建议所谓测试模式正式模式,都做到生成环境中去。

正规一点的 SDK 常见的做法是:为客户分配参数,然后客户的应用默认是 Test mode.

客户正常接入(接入过程中会有很多垃圾数据脏数据),等到正式接入完成,你们再后台验收,查看关键接口调用与数据是否正常,验收正常,将 Test mode 修改为正式模式。


容易出错的地方,不要吝啬,多打日志,客户多了,什么样的程序员你都会见到的。
liudaolunhuibl
2020-09-14 16:28:17 +08:00
1 、使用者在 application 文件里自己配置,你们读配置文件
2 、配置参数在启动参数里你们读取启动参数啊

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

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

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

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

© 2021 V2EX