分享一下最近新写的 Web API 框架 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
yetrun
V2EX    分享创造

分享一下最近新写的 Web API 框架

  •  
  •   yetrun 2022-09-14 16:55:36 +08:00 2563 次点击
    这是一个创建于 1176 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在这个主题下发布应该没错吧。

    零零总总写了有半年了,虽然现在并不是一个发布的好时机,但是想要先分享出来和大家伙交流一下想法。本来打算先在公司用起来的,不过最近公司没有什么新项目,老项目我也不想换框架了,人力物力呀…… 所以只在自己的个人项目下应用了,目前运转良好。

    又是一个轮子,只不过有些不一样的地方。

    首先,思想上它是完全面向 API 文档的。也许好多团队写文档会借助于 YAPI 这样的第三方工具,或者直接用 Postman 这样用用例来说话,再不济手写 Markdown. 我在框架里直接生成了 OpenAPI 的规格文档,在开发者实现接口的同时,文档就生成了。例如像下面这样定义一个接口,同时文档就能生成了:

    route('/users', :post) .title('创建一个新用户') .params { param :user, type: 'object', using: UserEntity } .do_any { # 这里实现你的业务逻辑 ... } .if_status(201) { expose :user, type: 'object', using: UserEntity } 

    其次,这次将参数和返回值的写法统一起来了。像上面,我们只用了一个 UserEntity,就可以同时定义参数和返回值了,再也不用写两遍了。你的 UserEntity 内部可能是这样写的:

    class UserEntity property :id, type: 'integer', param: false # 只返回 property :password, type: 'string', render: false # 只用作参数 property :name, type: 'string, property :age, type: 'integer' end 

    其他的功能还有很多,就不想一一列举了。想进一步了解的,可以去看 GitHub 仓库:

    https://github.com/yetrun/web-frame

    这个框架适合纯 API 后端的场景,即前后端分离。也比较适合团队,基本用一种固定的写法构建 API. 重点是生成对应的文档,前后端不再扯皮(你的文档是这么定义的,怎么你返回的数据是长这样啊之类的云云)。

    说实话最近整体的工作节奏都有些慢,受大环境的影响吧。本来打算等到我稳定运行后再发布了,但是这可能还要一阵子,就先预先发布一下看看反馈再说。现在大家运行起来可能有点吃力,因为还缺一个项目脚手架,后面会补上。

    如果觉得对你有用,还望支持一下,对我回复个 +1. 如果大家热情足够的话,因为涉及到文档,我感觉上手难度还是有的,到时会建个 QQ 群或微信群做全面的答疑。如果大家热情不高,我就当成一个小众项目在我的团队里使用吧。视反馈而定。

    4 条回复    2022-09-18 12:20:37 +08:00
    Vegetable
        1
    Vegetable  
       2022-09-14 17:10:53 +08:00
    省流:Ruby 写的
    lizhenda
        2
    lizhenda  
       2022-09-15 14:46:10 +08:00
    Ruby 的优势是啥?
    magicdawn
        3
    magicdawn  
       2022-09-16 16:27:09 +08:00
    ruby 的优势: make programmers happy
    yetrun
        4
    yetrun  
    OP
       2022-09-18 12:20:37 +08:00
    我忘记声明是 Ruby 写的了,貌似这种语言不被大众接受。对于写这种领域驱动( DSL )的框架,用 Ruby 较容易实现。另外一种可选项是 Groovy.

    先做个调研吧,如果用 Groovy 实现框架,可结合 Java 应用,可接受度是不是更高一点。
    关于     帮助文档     自助推广系统     博客     API    FAQ     Solana     5714 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 06:24 PVG 14:24 LAX 22:24 JFK 01:24
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86