首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么要在葡萄API中使用帮助器,而不是包含模块?

为什么要在葡萄API中使用帮助器,而不是包含模块?
EN

Stack Overflow用户
提问于 2016-06-15 22:33:53
回答 1查看 3.2K关注 0票数 6

当使用Grape编写应用程序接口时,为什么要麻烦地使用helpers宏,而不是只包含一个模块或添加一个方法呢?

例如,您可以在模块中定义方法,并将它们作为帮助器包含在Grape中,如下所示:

代码语言:javascript
复制
module HelperMethods
  def useful_method(param)
    "Does a thing with #{param}"
  end
end

class HelpersAPI < Grape::API
  helpers HelperMethods

  get 'do_stuff/:id' do
    useful_method(params[:id])
  end
end

但是,为什么不这样做呢?

代码语言:javascript
复制
class IncludeAPI < Grape::API
  include HelperMethods

  get 'do_stuff/:id' do
    useful_method(params[:id])
  end
end

我猜包含HelperMethods模块的目的是为了提供帮助方法这一点更明确一些,但这似乎是添加替代语法的一个软弱的理由。

与仅使用普通include相比,您希望使用helpers的好处/原因是什么

EN

回答 1

Stack Overflow用户

发布于 2016-06-15 23:03:03

你可以使用辅助函数来定义可重用的参数,这在标准的ruby模块中是做不到的。

代码语言:javascript
复制
class API < Grape::API
  helpers do
    params :pagination do
      optional :page, type: Integer
      optional :per_page, type: Integer
    end
  end

  desc 'Get collection'
  params do
    use :pagination # aliases: includes, use_scope
  end
  get do
    Collection.page(params[:page]).per(params[:per_page])
  end
end

https://github.com/ruby-grape/grape#helpers

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37838438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档