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

2022-09-14 16:55:36 +08:00
 yetrun

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

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

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

首先,思想上它是完全面向 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 群或微信群做全面的答疑。如果大家热情不高,我就当成一个小众项目在我的团队里使用吧。视反馈而定。

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

先做个调研吧,如果用 Groovy 实现框架,可结合 Java 应用,可接受度是不是更高一点。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/880033

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX