0

クライアントが呼び出すサービスの URL の例は次のようになります。

http://www.example.com/providers/?query=eric&group_ids[]=1F23&group_ids[]=423&start=3&limit=20

すでに書かれているヘルパー モジュール/メソッドは次のようなもので、自分のクライアントに使用する必要があります。

def create_http_request(method, path, options = {})
  # create/configure http
  http = Net::HTTP.new(@base_uri.host, @base_uri.port)
  http.open_timeout = options[:open_timeout] || @open_timeout
  http.read_timeout = options[:read_timeout] || @read_timeout

  # create/configure request
  if method == :get
    request = Net::HTTP::Get.new(path)
  else
    raise ArgumentError, "Error: invalid http method: #{method}"
  end

  return http, request
end

他の人が書いた同様のコードの他の部分には、次のようなものがあります。 create_http_request メソッドを呼び出すには:

 def person_search(query, options = {})
  params = {
    query: query,
      group_ids: options[:group_ids],
    start: options[:page] || @default_page,
    limit: options[:page_size] || @default_page_size
  }

  pathSemantic = "/patients/?#{ params.to_param }"
  httpSemantic, requestSemantic = create_http_request(:get, pathSemantic, options)

だから主に私は彼女が params で何をしているのか理解していません.なぜそれをする必要があるのですか? それが最善の方法ですか?

4

1 に答える 1

1

to_param メソッドについて質問していますか? URL で使用できる param 文字列を作成します。ここでそれについて読むことができます: http://apidock.com/rails/ActiveRecord/Base/to_param

そのため、個人検索メソッドでは、クエリ、オプション ハッシュで指定された値、およびオブジェクトに格納されているデフォルト オプションに基づいてパラメーターが構築されます。それらはパスに添付されて pathSemantic 文字列を作成し、次に create_http_request メソッドに渡されます。

再。パラメータの構築 -- これは、クエリ パラメータが :query キーにマッピングされたハッシュ、オプション :group_id の値が :group_id キーにマッピングされたハッシュ、オプション :page の値が :start にマッピングされたハッシュなどです。 .

  params = {                                         # params is a hash
    query: query,                                    # the key query is mapped to the query method parameter (we got it from the call to the method)
    group_ids: options[:group_ids],                  # the key :group_ids is mapped to the value that we got in the options hash under the :group_id key (we also got the options as a parameter in teh call to the method)
    start: options[:page] || @default_page,          # the key :start is mapped to the value that we got in the options hash under the :page key. In case it is not set, we'll use the value in the instance variable @default_page
    limit: options[:page_size] || @default_page_size # the key :page_size is mapped to the value that we got in the options hash under the :page_size key. In case it is not set, we'll use the value in the instance variable @default_page_size
  }

x || について疑問がある場合 y 表記 -- x が設定されていない場合、y の値が使用されることを意味します (これは慣用的な形式で使用されるショートカット演算子「or」です)。

配列にマップされたキーで to_param が機能する方法:

{group_ids: ["asdf","dfgf","ert"]}.to_param
=> "group_ids%5B%5D=asdf&group_ids%5B%5D=dfgf&group_ids%5B%5D=ert"

のURLエンコーディングです

"group_ids[]=asdf&group_ids[]=dfgf&group_ids[]=ert"
于 2013-05-01T20:16:06.720 に答える