我使用Rails和Grape作为API。我只是好奇为什么葡萄中没有session[:something]
方法?我可以创建cookie,但也不能创建签名的cookie。它给我一个错误。
答案 0 :(得分:7)
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
中间件。