如题
你们觉得最好用的点在哪里呢
多数人是觉得在 controller 里面直接做 param 验证这一点很方便吧,而且还能顺带生成 API 文档。
但是我觉得这反而是缺点。因为模型验证是一定要在 model 里面写一下的,不然很容易脏数据。另外 controller 承担了声明 API 文档的责任,让每个 controller 都很长,这样的文档难以维护。
优点是和 swagger 集成的比较好,文档和代码能保持比较好的一致性。当然对于一些特殊业务,或者复杂的 query 查询,还是免不了要写一些额外的文档。不过在团队规模很小的情况下,这点问题通过沟通就可以解决了。
最初用的时候可能会不习惯这样的写法,因为 controller 层的代码夹在一大堆的 desc 和 params 声明之间,看起来非常难受。我现在的做法是每个 desc 之间空开三行,在 params 和 action 代码之间添加用于视觉定位的标志性注释。这样在找一个 action 的代码时,没有这么不舒服。其次是尽量把复杂一点的逻辑放在 helpers 里,action 里只保留少数核心逻辑。稍微适应几天,慢慢会发现 grape 还是有它自己优雅的地方的。
我猜他的早期是说,在项目开发的早期就造成了 controller 很重的意思。
一般来说 controller 很重都是项目到后期开始腐烂了才会出现的情况,而 grape 和 apipie 让你在刚写 2 个月的代码里就能体验到这种酸爽。
独立的 api 逻辑,便于维护,grape 的 dsl 比较方便可以搭配 swager 使用,不会污染 routes.rb 不过查看需要搭配 gem 才能显示路由,而且使用 grape 也要看你的项目特点,一般是在原有复杂项目中加入部分 api 会这么做,纯 api 完全可以使用 rails api 或是 sinatra