V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
restran
V2EX  ›  Python

用 Tornado 做了一个 JSON API Gateway

  •  2
     
  •   restran ·
    restran · 2016-02-23 19:50:45 +08:00 · 8689 次点击
    这是一个创建于 3230 天前的主题,其中的信息可能已经有所发展或是发生改变。
    API 是连接 App 和服务器数据库的桥梁。在 App 和各种 API 多了之后,对这些 API 的管理和保护就带来了一系列的问题。比如:

    1. 如何保护 API 不被非法访问,只能由 App 正常发起请求?
    2. 如何控制不同 App 对多种多样 API 的访问权限?
    3. API 的访问情况怎样,日志如何查看?

    于是,就有了 API Gateway 这个项目

    项目地址: https://github.com/restran/api-gateway

    目前已经完成了 api-gateway 的服务端部分, Web 控制台还剩访问日志和访问统计查看。计划开发 Android 和 iOS 的 API Client 。

    在设计上有什么问题,还请大家多提意见。
    21 条回复    2016-03-08 14:42:49 +08:00
    rim99
        1
    rim99  
       2016-02-23 20:05:41 +08:00
    看上去蛮有意思,已关注。以后拿来学习
    Ge4Los
        2
    Ge4Los  
       2016-02-23 22:37:54 +08:00   ❤️ 1
    挺有意思的项目,先关注了
    Comdex
        3
    Comdex  
       2016-02-24 00:29:10 +08:00 via Android
    不明白具体用处?
    shajiquan
        4
    shajiquan  
       2016-02-24 01:18:18 +08:00
    已 star
    ewBuyVmLZMZE
        5
    ewBuyVmLZMZE  
       2016-02-24 04:55:42 +08:00 via iPad   ❤️ 1
    看了下,协议不是很规范,请参考项目 kong 。有点轮子的嫌疑。
    ewBuyVmLZMZE
        6
    ewBuyVmLZMZE  
       2016-02-24 04:56:47 +08:00 via iPad
    latyas
        7
    latyas  
       2016-02-24 07:25:31 +08:00
    不错 stared
    restran
        8
    restran  
    OP
       2016-02-24 08:43:45 +08:00
    @syhily 谢谢。为了管理我们很多 App 的 API ,我们内部有一个 api-gateway ,但是还比较粗糙,这是我重写的版本,在还没正式完成前,就来发帖,也是为了及早发现设计上的错误和不足。
    diyisoft
        9
    diyisoft  
       2016-02-24 08:49:11 +08:00
    期待这样的 api-gateway
    knktc
        10
    knktc  
       2016-02-24 08:50:10 +08:00
    已 star ,最近也想做类似的东西,参考一下。
    之前是想尝试用 falcon 啥来开发,但是一直也没有开始工作~
    restran
        11
    restran  
    OP
       2016-02-24 08:50:53 +08:00
    @Comdex 可以看看 kong 的文档 https://getkong.org/
    restran
        12
    restran  
    OP
       2016-02-24 08:52:59 +08:00
    @diyisoft 我承认是造了个轮子,由于之前在用的 api-gateway 跟业务有比较多的耦合,而且比较粗糙,所以我才重写了一个。现在你可以先试试 kong https://getkong.org/
    restran
        13
    restran  
    OP
       2016-02-24 08:53:30 +08:00
    @knktc 欢迎交流学习
    yishenggudou
        14
    yishenggudou  
       2016-02-24 09:36:50 +08:00
    也有类似的思路 做了一半
    diyisoft
        15
    diyisoft  
       2016-02-24 11:12:04 +08:00   ❤️ 1
    @restran 没有说你造轮子,期待你的 api-gateway ,已经 star
    viamcc
        16
    viamcc  
       2016-02-24 11:28:33 +08:00
    验证 Referer 和绑定对方 IP 来保证不被非法访问
    zeuss
        17
    zeuss  
       2016-02-24 11:40:44 +08:00   ❤️ 1
    不错,已 star ,持续关注。
    restran
        18
    restran  
    OP
       2016-02-24 12:17:23 +08:00
    @viamcc 因为 Referrer 可以被构造,只能做简单的防盗链,如果是 App 上的 API ,面向的用户 IP 不可预期,绑定 IP 就不太合适。所以我采用了 HMAC 签名来鉴权。
    viamcc
        19
    viamcc  
       2016-02-25 09:45:59 +08:00
    @restran 我理解的是 B2B 方式,所以绑定对方服务器的出口 IP 即可,无关乎用户
    restran
        20
    restran  
    OP
       2016-02-25 12:18:42 +08:00
    @viamcc 这种情况下可行
    gushan
        21
    gushan  
       2016-03-08 14:42:49 +08:00   ❤️ 1
    访问日志可以考虑直接对接阿里云日志服务。
    1 )丰富的 SDK ( https://help.aliyun.com/document_detail/sls/sdk/intros/overview.html?spm=5176.docsls/user-guide/overview.6.176.xzZp1l
    2 )日志收集到服务端后提供多种消费方式:数据通道(类 Kafka )/数据投递( ODPS 、 OSS-组合 E-MapReduce Spark )/实时搜索( https://help.aliyun.com/document_detail/sls/user-guide/overview.html
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   940 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 21:19 · PVG 05:19 · LAX 13:19 · JFK 16:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.