GraphQL何もわからない…初めてなので優しくしてほしい。
require 'graphql/client' require 'graphql/client/http' module ZenhubDone ACCESS_TOKEN = ENV['GITHUB_FOR_ZENHUB_TOKEN'] ENDPOINT = 'https://api.github.com/graphql' http = GraphQL::Client::HTTP.new(ENDPOINT) do def headers(context) { "Authorization" => "Bearer #{ACCESS_TOKEN}"} end end schema = GraphQL::Client.load_schema(http) client = GraphQL::Client.new(schema: schema, execute: http) Query = client.parse <<-GraphQL query { viewer { login } } GraphQL response = client.query(Query) # => #<GraphQL::Client::Response:0x00007fd6dad6e5a8 # @data=#< viewer=...>, # @errors=#<GraphQL::Client::Errors @messages={} @details={}>, # @extensions=nil, # @original_hash={"data"=>{"viewer"=>{"login"=>"katsumata-ryo"}}}> end
なんか、何かが取れたっぽいんだけど全然わからない。
とりあえず動いたからなんとなくこれからドキュメント読んでいけばわかりやすくなりそう。RESTと比べると宣言的な感じがする(感じがするだけでなにもわからない)。
GithubのAPIドキュメントみながら試行錯誤してるけど、なんかちょっとずつ見えてきたぞ
# マイルストーン内のIssueをとってくる Query = client.parse <<-GraphQL query { repository(name: "XXXX", owner: "XXXXX") { milestones(last: 1) { nodes { id title issues(first: 100) { nodes { id number title closed } } pullRequests(first: 100) { nodes { id number title closed } } } totalCount } } } GraphQL response = client.query(Query) # => #<GraphQL::Client::Response:0x00007fd69a8a1448 # @data=#< repository=...>, # @errors=#<GraphQL::Client::Errors @messages={} @details={}>, # @extensions=nil, # @original_hash= # {"data"=> # {"repository"=> # {"milestones"=> # {"nodes"=> # [{"id"=>"XXXX", # "title"=>"XXXXX", # "issues"=> # {"nodes"=> # [{"id"=>"xxxxxxx", # "number"=>0000, # "title"=>"XXXXX", # "closed"=>false}, # # "pullRequests"=>{"nodes"=>[]}}], # "totalCount"=>000}}}}>
Node・Connection とかの概念が体に染み渡るともっとシュッとかけそうな気がする。それにしても宣言的、型みたいだ。
取りたい内容はなんとなく取れてきた。
一通り取れそうな感じになったらドキュメント読んでみよう。