为什么 session[:] 在 grape - rails 中不起作用?
Why doesn't session[:] work in grape - rails?
我正在使用 Rails 和 Grape 作为 API。我很好奇为什么葡萄中没有 session[:something]
方法?我可以创建 cookie,但也不能创建签名 cookie。它给我一个错误。
Grape 是用于构建 API 的轻量级框架,当您向 Grape API 端点发送请求时,响应不会通过所有 Rails 中间件相反,它通过一组薄的 Rack 中间件。因此,Grape 专为构建 API 而设计,您可以根据需要插入所需的中间件。主要目标是使 API 尽可能轻便,并实现高效的速度和性能。
如果你想在安装在 Rails 上的 Grape 中启用会话,你需要使用 ActionDispatch::Session::CookieStore
中间件。
class API < Grape::API
use ActionDispatch::Session::CookieStore
helpers do
def session
env['rack.session']
end
end
post :session do
session[:foo] = "grape"
end
get :session do
{ session: session[:foo] }
end
end
您可以使用 grape_session gem 来达到上述目的。
如果您想要在没有 Rails 中间件的 Rack 应用程序中使用会话的默认方式,请使用 Rack 中可用的默认 Rack::Session::Cookie
中间件。
我正在使用 Rails 和 Grape 作为 API。我很好奇为什么葡萄中没有 session[:something]
方法?我可以创建 cookie,但也不能创建签名 cookie。它给我一个错误。
Grape 是用于构建 API 的轻量级框架,当您向 Grape API 端点发送请求时,响应不会通过所有 Rails 中间件相反,它通过一组薄的 Rack 中间件。因此,Grape 专为构建 API 而设计,您可以根据需要插入所需的中间件。主要目标是使 API 尽可能轻便,并实现高效的速度和性能。
如果你想在安装在 Rails 上的 Grape 中启用会话,你需要使用 ActionDispatch::Session::CookieStore
中间件。
class API < Grape::API
use ActionDispatch::Session::CookieStore
helpers do
def session
env['rack.session']
end
end
post :session do
session[:foo] = "grape"
end
get :session do
{ session: session[:foo] }
end
end
您可以使用 grape_session gem 来达到上述目的。
如果您想要在没有 Rails 中间件的 Rack 应用程序中使用会话的默认方式,请使用 Rack 中可用的默认 Rack::Session::Cookie
中间件。