• 请不要在回答技术问题时复制粘贴 AI 生成的内容
contradictspiral
V2EX  ›  程序员

开放 API 和业务 API

  •  
  •   contradictspiral · Dec 23, 2021 · 2916 views
    This topic created in 1610 days ago, the information mentioned may be changed or developed.

    背景

    目前在做一个平台型的项目,需要开放部分 API 给外部开发者使用,在架构设计上有些疑问。

    疑问

    1. 这套暴露的 API 是直接把现有的业务 API 加一种鉴权方式(比如 OAuth2 ,开发者 token 之类的)给暴露出去呢,还是需要新写一套 API 呢?
    2. 对于目前比如阿里云这些平台的开放 API ,有大佬清楚是如何设计的么,他们前端页面会是也调用的同样的 API 吗?
    5 replies    2021-12-24 14:33:08 +08:00
    Oktfolio
        1
    Oktfolio  
       Dec 23, 2021
    走 API Gateway 加鉴权。至于复用,个人偏向于新写一套 API 。
    thinkershare
        2
    thinkershare  
       Dec 23, 2021
    开放 API 属于应用层, 业务属于领域层, 网关还在更上层, 所以肯定是分开哈
    br_wang
        3
    br_wang  
       Dec 23, 2021
    「隔离」挺重要的。即使不重新开发,重新部署一套也是有必要的。
    v2orz
        4
    v2orz  
       Dec 23, 2021
    APIgateway
    开放的和自己用的肯定不走一条道
    NewConn
        5
    NewConn  
       Dec 24, 2021   ❤️ 1
    我们改过 3 次
    最开始:对外和内部走一个 gateway ,同一套服务;网关有鉴权,但是只有对内页面会重定向到单点登录,对内的后台接口和对外接口,都通过 header 参数后门绕过;
    第一次改:对外和对内同一个网关,同一套代码;对外和对内用不同的 CI 参数(主要就是数据库只读 /读写不同),不同的机器部署;
    第二次改:对外接口有超大返回值,比如一次返回 6G 的 JSON(这不是关键)。对外接口返回时间长,占用网关的并发;网关的超时时间必须设置的很长,兼容对外接口,影响界面。所以网关也拆分成 2 个了。
    第三次改:对外接口设置黑名单,必须统一 OAUTH 鉴权,header 带动态 token ;不在黑名单的接口,保持 header 参数绕过鉴权
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2556 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 70ms · UTC 16:00 · PVG 00:00 · LAX 09:00 · JFK 12:00
    ♥ Do have faith in what you're doing.