V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
dzdh
V2EX  ›  问与答

对于 api 网关来说,两种设计,哪种更适合

  •  
  •   dzdh · 2022-04-27 14:07:36 +08:00 · 1621 次点击
    这是一个创建于 939 天前的主题,其中的信息可能已经有所发展或是发生改变。

    是酱,觉得市面上的 api 网关都太产品化,难用(配置麻烦),所以用 spring cloud gateway 自己开发了一套网关。

    然后对实现形式上,有一些争议,主要体现在规范、管理上。 比如:

    第一种,像支付宝一样

    openapi.x.com/gateway.do?method=api.name.and.version&other_business_parameters&sign_type=hmac&sign=
    

    第二种

    GET openapi.x.com/api/name/and/version?other_business_parameters HTTP/1.1
    Host openapi.x.com
    X-$公司名缩写-AUTHTYPE: HMAC-SHA256
    X-$-Client-ID: xxx
    X-$-Sign: xxxxxxxxx
    

    无论那种,到网关,最终都 http.reveserve( http://backend-server-name-in-k8s:port)

    就从表意、管理、规范、使用等等等等各方面来综合定一个方案,哪种更好。

    尝试第一种,使用 apisix , 配置了一堆 /gatweay.do 的路由。。后台页面像这样:

    路由 对应服务
    /gateawy.do s1
    /gateway.do s2
    /gateway.do s3
    /gateway.do s4

    第二种,后台页面像这样:

    路由 对应服务
    /v1/s1/** s1
    /v1/s2/** s2
    /v1/special/** s3
    /v1/444/** s4

    不说技术实现,自己开发的话,无论哪种方案都能实现也都好实现。就说管理、规范等等等等其他方案。

    3 条回复    2022-04-27 19:06:43 +08:00
    cloverstd
        1
    cloverstd  
       2022-04-27 16:08:26 +08:00   ❤️ 1
    如果你有前端监控,第二种方案,前端监控还要适配才能采集到正确的请求 API ,一般情况下前端监控不会处理 request header

    我更倾向于把 appid 和 method 放到 path 里,这样中间链路的现有监控都能复用现成的,改造量最小,因为 http 监控打点都会去打点 URL ,但是 header 和 querystring 就不一定了
    blackshadow
        2
    blackshadow  
       2022-04-27 17:11:40 +08:00   ❤️ 1
    我们用了第二种,更简洁明了。 基于 gateway 的话,配置也方便
    coreki
        3
    coreki  
       2022-04-27 19:06:43 +08:00
    我用的第二种。不过第一种在前段定义 api url 的时候是不是更省事?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1101 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 18:47 · PVG 02:47 · LAX 10:47 · JFK 13:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.