みそみそりんりんblog

勉強したことを書いていきます

Rubyの"graphql-client"使ってみた

前提

叩きたいAPIにGraphQLが用意されており、折角なので触ってみる

実装内容

Gemfileに以下を記述して、gemをinstall

gem "graphql-client"

APIのラッパーを作成する

require "graphql/client"
require "graphql/client/http"

module Api
  # GraphQLのエンドポイント、ヘッダー情報作成
  HTTP = GraphQL::Client::HTTP.new(ENV['END_POINT']) do
    def headers(context)
      { "#{ENV['HEADER_KEY']}": ENV['HEADER_VALUE'] }
    end
  end

  # 初期化で、最新のネットワーク取得 & リクエスト
  Schema = GraphQL::Client.load_schema(HTTP)
  Client = GraphQL::Client.new(schema: Schema, execute: HTTP)
end

実行してみる

Query = Api::Client.parse <<-'GRAPHQL'
  query {
    hero {
      name
    }
  }
GRAPHQL

result = Api::Client.query(Query)

p result

=begin
#<GraphQL::Client::Response:0x0000ffff9bc01408
@data=#<#<Module:0x0000ffffa0125e58>::Query viewer=...>,
@errors=#<GraphQL::Client::Errors @messages={} @details={}>,
@extensions=nil,
@original_hash={"xxxx"=>{"xxxxx"=>{"xxxxx"=>"xxxxx", "name"=>"xxxx"}}}>
=end

感想

GraphQL理解する良い機会になった.
APIサーバーの方も作ってみようかな

参考サイト

GitHub - github/graphql-client: A Ruby library for declaring, composing and executing GraphQL queries