0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[ruby] Google API Clientでリクエストbodyを確認する

Last updated at Posted at 2024-02-20

リクエスト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内で行っています。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?