2016-11-29 29 views
5

GraphQL konusunda yeniyim ama bir süredir Retrofit kullanıyordum, kullanımı kolay ve hızlı. Veriyi nasıl geçirdiğinize göre GraphQL, dinlenme apisinden çok farklıdır. Orada Android ile GraphQL kullanarak orada çok fazla öğreticiler gerçekten yok, ben sadece bu video (https://www.youtube.com/watch?v=P0uJHI7GjIc&t=1s) bulmak mümkün oldu ama orada gerçek bir kod yoktur.Android'de Retrofit ile GraphQL nasıl kullanılır?

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

Sonra böyle bir dinlenme hizmetlerini arayın:

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

yalnızca sahip güçlendirme aramaları için geçerli kodunda

ben şöyle ayarlanmış bir bitiş noktası vardır temel url ve servis yolu yok. Eğer KullanıcıNo gibi sorguluyorsunuz Ayrıca eğer = 1 o zaman Vücut parametreleriyle mesaj olarak göndermek zorunda:

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

Bunun GraphQL olduğu için

+1

Sen içeren bir JSON vücut oluşturmak gerekir AutoValue için Abonelikler ve destek sizin ' sorgu ', 'operationName' ve' variable's, sonra sunucuya JSON atanmış POQLS için yeniden adlandırmak için belirlenen GraphQL URL için ayarlayın. Retrofit'in sadece OkHttp ve Gson for GraphQL kullanarak fazla fayda sağlayacağından emin değilim. – CommonsWare

+0

Tamam, burada bir güçlendirme için JSON gövdesinin nasıl oluşturulduğunu görüyorum: http://stackoverflow.com/questions/21398598/how-to-post-raw-whole-json-in-the-body-of-a-retrofit- istek. Ama Post yolu ne olmalı? Yani: Benim Graphql sunucum için sadece bir temel url var. – Mike6679

+1

"Post yolu ne olmalı" - bir GraphQL sunucusunda genellikle yalnızca bir uç nokta vardır. Yani, özellikle de '/ graphql' ile bittiğinde, sahip olduğunuz temel URL'yi kullanın. – CommonsWare

cevap

3

Yapı Sorgular & Ayrıştırma yanıtları Güçlendirme çevirir nasıl emin değilim sadece basit değil. Bu evcil hayvan projelerinde kullanıyorsanız, Apollo'yu keşfetmeye başlamanızı öneririz. Bu müşteri ciddi bir gelişmedir, ancak zaten onunla bir göz atabilir ve oynayabilirsiniz.

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

şimdiye kadar Apollo ile çalışmaktan memnun ve onların yol haritasında güzel özellikleri vardır: RxJava Entegrasyonu, Retrofitler,