gpt4 book ai didi

ruby - 为什么在 Grape API 中使用助手而不是包含模块?

转载 作者:太空宇宙 更新时间:2023-11-03 16:19:03 26 4
gpt4 key购买 nike

当用 Grape 编写 API 时,为什么要费心使用 helpers 宏,而不是只包含一个模块或添加一个方法?

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

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

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

class IncludeAPI < Grape::API
include HelperMethods

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

我想您包含 HelperMethods 模块是为了提供帮助器方法,这有点更明确,但这似乎是添加替代语法的不充分理由。

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

最佳答案

您可以使用助手定义可重用的参数,这在标准的 ruby​​ 模块中是做不到的。

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

关于ruby - 为什么在 Grape API 中使用助手而不是包含模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37838438/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com