Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.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 有没有办法在grape上修改或发送自定义标题?_Ruby_Goliath_Grape Api - Fatal编程技术网

Ruby 有没有办法在grape上修改或发送自定义标题?

Ruby 有没有办法在grape上修改或发送自定义标题?,ruby,goliath,grape-api,Ruby,Goliath,Grape Api,我用的是歌利亚和葡萄。在我的goliath服务器上,它调用grape api,如下所示: when '/posts' then FrameworksAPI::API.call(env) 在我的grape api类中,我的方法非常简单: get '/:id' do Post.find(params[:id]) end 我想修改标题-特别是“内容长度”,但不确定如何修改 我还想问另外一个问题。如何在GET方法返回我要修改的结果之前创建回调/过滤器。从FrameworkAPI::API.call

我用的是歌利亚和葡萄。在我的goliath服务器上,它调用grape api,如下所示:

when '/posts' then FrameworksAPI::API.call(env)
在我的grape api类中,我的方法非常简单:

get '/:id' do
 Post.find(params[:id])
end
我想修改标题-特别是“内容长度”,但不确定如何修改


我还想问另外一个问题。如何在GET方法返回我要修改的结果之前创建回调/过滤器。

从FrameworkAPI::API.call(env)方法返回的结果将是一个三元组[status_code,Header,body]。因此,与其只是从您的案例中返回,不如做如下操作:

when '/posts' then
  status, headers, body = FrameworksAPI::API.call(env)
  headers['whatever'] = blah
  [status, headers, body]
您也可以更改实体,只是要小心,因为实体可能是一个数组


Goliath还提供了一个内容长度中间件。默认情况下加载内容长度,但如果设置自定义内容长度,则以该长度为准。请注意,在设置内容长度后,其他中间件(如formattings)不会更改正文。

Grape现在有一个
标题
帮助程序,用于一些版本

header 'Content-Length`, 42.to_s
关于修改主体的第二个问题,请尝试在API级别使用
after do…