2016-11-29 10 views
5

私はGraphQLを使い慣れていませんが、今はしばらくの間Retrofitを使用しており、使いやすく高速です。 GraphQLは、データをどのように渡すかに関して、残りの部分とは大きく異なります。 AndroidでGraphQLを使用するにあたって実際にあまり多くのチュートリアルはありませんが、このビデオ(https://www.youtube.com/watch?v=P0uJHI7GjIc&t=1s)しか見つかりませんでしたが、実際のコードはありません。私はそうのように設定されたエンドポイントを持つ改造コールの私の現在のコードでAndroidでGraphroQLをRetrofitで使用するには?

final RestAdapter restAdapter = new RestAdapter.Builder() 
       .setEndpoint(endPoint) 
       .build(); 
     T service = restAdapter.create(clazz); 

それから私はこのようなRESTサービスを呼び出す:あなたが唯一持っているGraphQLで今

@GET("https://stackoverflow.com/users/{login}") 
    Observable<Github> getUser(@Path("login") String login); 

をベースURLとサービスパスなし。あなたは= 1のuserIdのようなクエリを実行している場合にも、あなたは身体パラメータをポストとして送信する必要があります:

operationName: arbitrary name , 
query: "{users(userid:$userId){username}}, 
variables: "{"userId":1}" 

は、私はちょうどこれがGraphQLため

+1

のサポートは、 query'、 'operationName'、' variables'を指定して、JSONをサーバーに指定したRetrofitを指定されたGraphQL URLに配置します。私は、RetrofitがGraphQLのためにOkHttpとGsonを使用するだけでははるかに有益であると確信しています。 – CommonsWare

+0

ここでは、改造のためにJSON本体を作成する方法を示します。http://stackoverflow.com/questions/21398598/how-to-post-raw-whole-json-in-the-body-of-a-retrofit-要求。しかし、Postのパスはどのようにすべきですか?すなわち、私はGraphqlサーバのベースURLしか持っていません。 – Mike6679

+1

"しかし、Postのパスはどのようにすべきですか?" - GraphQLサーバには通常1つのエンドポイントしかありません。ですから、既に存在するベースURLを、特に '/ graphql'で終わるURLを使用してください。 – CommonsWare

答えて

3

問合せの構築&解析応答を改造する変換するかどうかはわかりませんされて単純ではない。 ペットプロジェクトでこれを使用している場合は、Apolloの探索を開始することをおすすめします。このクライアントは深刻な開発の下にありますが、すでに見て遊んでいることができます。

https://github.com/apollographql/apollo-android

私はこれまでのアポロでの作業楽しんで、そしてそのロードマップ上の素晴らしい機能があります:RxJava統合、レトロフィット、サブスクリプションとあなたの `を含むJSON本体を作成する必要があります自動入力値

関連する問題