gpt4 book ai didi

ruby-on-rails - 继承在 Grape 中不起作用

转载 作者:行者123 更新时间:2023-12-04 03:45:28 28 4
gpt4 key购买 nike

我正在使用 Grape redtful-api。我无法继承 Grape 中的 common_params。我定义了共同
_params 类 API1 并在 API2 中调用它会引发错误。如何更改代码以使其正常工作?

module Example
class API1 < Grape::API
version 'v1'
format :json
prefix :api

resource :exc1 do
common_params = proc do
requires :param1
requires :param2
end

params(&common_params)
get :params_by_pair do
p1 = params[:param1]
p2 = params[:param2]
response = "https://www.example1.com/#{p1}_#{p2}"
end
end
end
end

module Example
class API2 < API1
version 'v1', using: :header, vendor: 'twitter'
format :json
prefix :api

resource :exc2 do

params(&common_params)
get :params_by_pair do
p1 = params[:param1]
p2 = params[:param2]
response = "https://www.example2.com/#{p1}_#{p2}"
end
end
end
end

最佳答案

这个问题与 Grape 没有太大关系,而是变量的作用域在 Ruby 中的工作方式。 common_params只是一个本地的,它不会在范围的末端存活下来。您可以使用类实例变量或 similar 使其工作。但我们不要去那里。您应该在不同的 Grape 之间共享助手的方式是通过一个专用模块。

module Example
module SharedHelpers
extend Grape::API::Helpers

params :common_params do
requires :param1
requires :param2
end
end
end

现在在不同的 Grape 中,您需要“包含”模块和 use helper 。
module Example
class API1 < Grape::API
helpers SharedHelpers # !!!

version 'v1'
format :json
prefix :api

resource :exc1 do
params do
use :common_params # !!!
end

get :params_by_pair do
...
end
end
end
end

使用 API2 中的助手 Grape ,使用相同的技术。

关于ruby-on-rails - 继承在 Grape 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27857555/

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