リクエストbody確認用コード
require 'google/apis/core/base_service'
module Google
module Apis
module Core
class ApiCommand
alias_method :original_execute, :execute
def execute(client, &block)
original_execute(client, &block)
ensure
pp body # body表示
end
end
end
end
end
このコードをトップレベルにコピペしてAPIリクエストを実行してください。
動作原理
APIリクエストはHttpCommand
クラスを継承したApiCommand
クラスのexecute
メソッドで実行されます。このメソッドはオーバーライドされていないので、実際にはHttpCommand
クラスのexecute
メソッドが呼ばれます。
class HttpCommand
def execute(client, &block)
prepare!
opencensus_begin_span
do_retry :execute_once, client, &block # API通信実行
ensure
opencensus_end_span
@http_res = nil
release!
end
end
リクエストbodyはこの処理の中の、prepare!
メソッドでJSON文字列として生成され、body
プロパティに保存されます。
class ApiCommand < HttpCommand
def prepare!
...
self.body = request_representation.new(request_object).to_json(user_options: { skip_undefined: true })
...
end
end
そのため、execute
メソッド実行後にApiCommand
インスタンスのbody
プロパティを確認すると、リクエストで送られたbodyを見ることができます。
なお、execute
メソッドはAPIエラー時に例外を送出するため、body表示はensure内で行っています。