V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
HashV2
V2EX  ›  程序员

微信小程序可以让用户自己选服务器吗?

  •  
  •   HashV2 · 2021-05-21 17:06:48 +08:00 · 3573 次点击
    这是一个创建于 1280 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在公司有产品主要功能再 admin 页面,但是有部分功能在 app 端(基本逻辑就是 admin 进行相关的功能配置,app 端点击执行功能),客户有 5-10 个,每个客户都需要在自己的内网机房建服务端,然后开放 app 相关的 api 到公网

    因为维护各个版本的安卓 /ios 包比较吃力,想转为微信小程序

    逻辑大概是这样:

    用户在选择服务器通过认证后可以绑定微信 以后再次打开小程序会自动连接到该服务器

    这种模式可行吗?如果不可行的话有没有其它的方案可以解决?

    24 条回复    2021-05-30 22:43:28 +08:00
    yitingbai
        1
    yitingbai  
       2021-05-21 17:09:13 +08:00
    微信小程序运行期间不可以改服务器地址, 但是你可以这么做, 服务端 api 中转到不同的目标服务器, 切换逻辑在服务端
    HashV2
        2
    HashV2  
    OP
       2021-05-21 17:11:40 +08:00
    没做过微信小程序开发,但是有前端经验
    两个星期能速成不?(这个 app 特别简单,只有登陆页面+列表页,只要对接大概五六个接口即可)
    HashV2
        3
    HashV2  
    OP
       2021-05-21 17:14:00 +08:00
    @yitingbai #1 就是我需要有一台服务器部署一个应用去专门对接微信然后再分发相关的请求?
    shapl
        4
    shapl  
       2021-05-21 17:14:12 +08:00
    @HashV2 #2 会 vue 的话,用 uniapp 开发上手很快。
    shapl
        5
    shapl  
       2021-05-21 17:14:57 +08:00
    @HashV2 #2 当然页面太简单的话,直接原生写就完事了。
    joooooker21
        6
    joooooker21  
       2021-05-21 17:16:42 +08:00
    可以用 nginx 做反向代理 , 小程序请求后台接口时带上客户标识即可
    yitingbai
        7
    yitingbai  
       2021-05-21 17:16:55 +08:00
    @HashV2 肯定要有一台服务器和小程序通讯啊, 如果业务非常简单, 也不必再写一个中转服务端, 直接用 nginx 转发到不同的目标服务器即可,
    HashV2
        8
    HashV2  
    OP
       2021-05-21 17:18:57 +08:00
    @shapl #4 那可以的 页面超级很简单 我也有 vue 的项目开发经验 现在是想确定方案的可行性
    HashV2
        9
    HashV2  
    OP
       2021-05-21 17:21:59 +08:00
    @yitingbai #7 了解了 app 部分的业务确实非常简单 中转服务器只需要部署 nginx 的话确实非常可行 因为给的开发周期不是很长 不想再写一个应用去做认证和分发 能在原代码上更新对接一下微信的认证就很好
    HashV2
        10
    HashV2  
    OP
       2021-05-21 17:30:39 +08:00
    感觉总的来说挺可行的 下班了 周一再回帖
    winnerczwx
        11
    winnerczwx  
       2021-05-21 18:55:03 +08:00
    @yitingbai #1 楼主说是在内网自建服务器, 中转应该是不行的吧
    jame
        12
    jame  
       2021-05-21 20:27:08 +08:00
    flutter 了解一下
    aristolochic
        13
    aristolochic  
       2021-05-21 20:35:57 +08:00
    所以……就是 Multi tenant 呗
    Web 实现的多租户还是太野了吧,就算有微信的绑定啥的
    建议还是加个 API 网关吧。不加网关你的合法域名要加到多长啊,现在客户数量少,以后呢?
    ch2
        14
    ch2  
       2021-05-21 20:50:54 +08:00
    小程序发请求必须域名 https+备案+后台白名单(有个数限制),你这想法一看就不靠谱
    Felldeadbird
        15
    Felldeadbird  
       2021-05-21 21:59:37 +08:00
    中转服务器啊。
    小程序 发送给 微信小程序管理后台绑定的域名

    绑定的域名将数据 转发 给 对应的域名。
    TimeRain
        16
    TimeRain  
       2021-05-21 22:46:33 +08:00
    直接云开发吧
    musi
        17
    musi  
       2021-05-21 22:55:35 +08:00
    可以借助云函数做中转,就不必硬上一个中装服务器了
    OHyn
        18
    OHyn  
       2021-05-21 23:21:57 +08:00
    如果这些服务都加了白名单,那 ok ;
    无非是动态处理一下请求地址的问题。但我记得小程序白名单编辑次数有限制?
    所以为了方便,还是自己做个反向代理吧。
    no1xsyzy
        19
    no1xsyzy  
       2021-05-22 00:49:33 +08:00
    @winnerczwx 内网倒是可以自己 mitm 自己,就是那个经典的「外网访问则找到公网走路由器端口映射,内网则不经过路由直接访问服务器」的问题。但是客户网络环境是否允许你这么做也是问题。
    nekochyan
        20
    nekochyan  
       2021-05-22 14:36:27 +08:00
    微信小程序必须用 https 发请求,并且以前是有 20 个白名单限制,不过现在已经取消了 20 个限制了,具体上限是多少就不知道,可以去微信小程序文档看看
    HashV2
        21
    HashV2  
    OP
       2021-05-24 08:48:30 +08:00
    @nekochyan #20 还好 准备冲小程序了 客户数量不会超过 20 个
    HashV2
        22
    HashV2  
    OP
       2021-05-24 08:50:14 +08:00
    @musi #17 云函数?我简单搜了一下不太明白,云函数做分发吗? 学习成本大不?
    musi
        23
    musi  
       2021-05-24 08:55:09 +08:00
    @HashV2 对,使用云函数做分发,唯一的学习成本可能就是学一下 Node.js 了,小程序每个月还有一定的免费额度,用户量不大的话刚刚好
    xiaoyiyu
        24
    xiaoyiyu  
       2021-05-30 22:43:28 +08:00 via iPhone
    曲线模式,自己的小程序授权自己的第三方服务,然后通过前端输入的域名,通过第三方接口增加服务域名配置。
    例如:小程序 A, 服务商 B 均为同一家公司,小程序 A 使用 a.com 提供服务,在小程序 A 内可以通过 a.com/change 提交用户需要的域名 b.coma.com 服务端收到请求后调用服务商 B 的修改小程序域名接口增加 b.com;同时前端修改请求域名为 b.com

    相关文档: https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/Mini_Program_Basic_Info/Server_Address_Configuration.html

    目前支持 1000 个域名,各类请求各 200
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1083 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 22:41 · PVG 06:41 · LAX 14:41 · JFK 17:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.