sinatra - graphql 抓取数据 post
定义一个方法进行数据的抓取,因为需要用到多次,所以会更方便
# 发起http post请求
def post_request options
server_url = options[:server_url]
body_in_hash = options[:body_in_hash]
response = HTTParty.post server_url,
:headers => { 'Content-Type' => 'application/json', 'Accept' => 'application/json'},
:body => body_in_hash.to_json
puts "== response: #{response}"
result = response.body
return result
end方法的使用:
def get_result_for_pns name temp_result = post_request server_url: 'https://moonbeamgraph.test-pns-link.com/subgraphs/name/graphprotocol/pns', body_in_hash: { "operationName": "MyQuery", "query": "query MyQuery {\n domains(where: {name: \"#{name}\"}) {\n labelhash\n labelName\n id\n name\n subdomains {\n name\n owner {\n id\n }\n }\n subdomainCount\n owner {\n id\n }\n parent {\n id\n }\n }\n sets(where: {domain_: {name: \"#{name}\"}}) {\n id\n keyHash\n value\n }\n registrations(where: {labelName: \"#{name.sub(".dot", '')}\"}) {\n expiryDate\n events {\n id\n triggeredDate\n }\n }\n}\n", "variables": nil } return temp_result end