2

私はゴリアテとグレープを使用しています。私のgoliathサーバーでは、ブドウのAPIを次のように呼び出します。

when '/posts' then FrameworksAPI::API.call(env)

私のブドウ API クラスでは、私のメソッドは次のように単純です。

get '/:id' do
 Post.find(params[:id])
end

ヘッダー、特に「Content-Length」を変更したいのですが、方法がわかりません。

また、追加で質問したいと思います。メソッド GET が結果を返す前にコールバック/フィルターを作成するにはどうすればよいですか? 結果を変更したいのですが。

4

2 に答える 2

7

現在、 Grape にはheaderいくつかのバージョンのヘルパーがあります。

header 'Content-Length`, 42.to_s

本体の変更に関する 2 番目の質問については、after do ...API レベルで使用してみてください。

于 2013-02-13T18:52:33.560 に答える
0

FrameworksAPI::API.call(env) メソッドからの戻り値は、トリプレット [status_code, headers, body] になります。したがって、ケースからそれを返すだけでなく、次のようにします。

when '/posts' then
  status, headers, body = FrameworksAPI::API.call(env)
  headers['whatever'] = blah
  [status, headers, body]

ボディを変更することもできますが、ボディは配列である可能性があるので注意してください。

Goliath が提供する Content-Length ミドルウェアもあります。Content-Length はデフォルトで読み込まれますが、カスタムの Content-Length を設定すると優先されます。コンテンツの長さを設定した後、書式設定などの他のミドルウェアが本文を変更しないように注意してください。

于 2012-09-07T05:40:43.307 に答える