返回

移动端配置与远程接口配置的那些事

IOS

大多数客户端都有远程配置的功能和需求,项目规模由小到大以后,对客户端动态配置的需求就会迅速增加。就会出现新的问题和需求。通过某一个接口,获取某一业务功能的配置信息,有时候需要根据业务触发的逻辑,在不同的时机调用接口,获取配置,又有些时候需要把客户端的一些信息,如版本号、时间、操作系统版本等数据,作为参数上传到服务端,服务端结合这些参数,返回不同的配置信息。

服务端如何做到针对每一个客户端单独配置,需要关注如下几个点:

  1. 接口根据客户端的不同信息,灵活返回不同的配置信息。

  2. 配置信息有版本控制,可以根据版本做灰度发布,或者提供回滚。

  3. 配置信息有过期时间,避免长期无效的配置信息污染数据。

  4. 配置信息有权限控制,需要保证只有有权限的客户端,才能获取配置信息,防止配置信息泄露。

有以上几点考虑之后,我们就可以设计出如下接口:

public interface ConfigService {

    /**
     * 获取配置信息
     *
     * @param appId 应用ID
     * @param version 版本号
     * @param clientInfo 客户端信息
     * @return 配置信息
     */
    ConfigInfo getConfig(String appId, String version, ClientInfo clientInfo);
}

其中,ClientInfo类包含了客户端的一些信息,如版本号、时间、操作系统版本等。

服务端收到请求后,根据appIdversionclientInfo,查询数据库,找到对应的配置信息,并返回给客户端。

客户端收到配置信息后,根据配置信息,调整自己的行为。

如果配置信息有更新,服务端会更新数据库中的配置信息,客户端下次调用接口时,会获取到最新的配置信息。

如果需要对配置信息进行灰度发布,服务端可以在数据库中添加一个灰度发布字段,只有灰度发布的配置信息,才会被灰度发布的客户端获取到。

如果需要对配置信息进行回滚,服务端可以在数据库中添加一个回滚版本字段,如果需要回滚,则把当前版本号改为回滚版本号,客户端下次调用接口时,会获取到回滚版本的配置信息。

如果需要对配置信息设置过期时间,服务端可以在数据库中添加一个过期时间字段,如果配置信息过期,则客户端调用接口时,会获取到一个空值。

如果需要对配置信息进行权限控制,服务端可以在数据库中添加一个权限控制字段,只有有权限的客户端,才能获取到配置信息。

以上就是移动端配置与远程接口配置的一些基本知识,希望能对大家有所帮助。