Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 4 为什么会话[:]不';你不能在葡萄架上工作吗?_Ruby On Rails 4_Grape - Fatal编程技术网

Ruby on rails 4 为什么会话[:]不';你不能在葡萄架上工作吗?

Ruby on rails 4 为什么会话[:]不';你不能在葡萄架上工作吗?,ruby-on-rails-4,grape,Ruby On Rails 4,Grape,我正在使用Rails和Grape作为API。我只是好奇为什么葡萄中没有session[:something]方法?我可以创建cookies,但也不能创建签名cookies。这给我带来了一个错误。Grape是一个用于构建API的轻量级框架,当您向Grape API端点发送请求时,响应不会通过所有Rails中间件,而是通过一组薄薄的机架中间件。因此,Grape是专门为构建API而设计的,您可以根据需要插入所需的中间件。主要目标是使API尽可能轻量级,并实现高效的速度和性能 如果要在安装在Rails上

我正在使用Rails和Grape作为API。我只是好奇为什么葡萄中没有
session[:something]
方法?我可以创建cookies,但也不能创建签名cookies。这给我带来了一个错误。

Grape是一个用于构建API的轻量级框架,当您向Grape API端点发送请求时,响应不会通过所有Rails中间件,而是通过一组薄薄的机架中间件。因此,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
class-API
您可以将gem用于上述目的


如果您想要在机架应用程序中使用会话的默认方式而不使用Rails中间件,请使用机架中可用的默认
Rack::session::Cookie
中间件。

如果您想要与Rails“共享”会话,您也需要像这样指定密钥:
使用ActionDispatch::session::CookieStore,key:“\u XXX\u session”
如果使用xhr向api端点发送请求,请确保请求头中存在cookie。