2016-11-29 44 views
5

Jestem nowym użytkownikiem GraphQL, ale od pewnego czasu używam Retrofit, a jego obsługa jest prosta i szybka. GraphQL znacznie różni się od reis apis pod względem sposobu przekazywania danych. Naprawdę nie ma zbyt wielu tutoriali na temat korzystania z GraphQL na Androida, mogłem tylko znaleźć ten film (https://www.youtube.com/watch?v=P0uJHI7GjIc&t=1s), ale tam nie ma prawdziwego kodu.Jak korzystać z GraphQL z Retrofit na Androida?

W moim bieżącego kodu dla połączeń modernizacji Mam końcowy mam ustawione tak:

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

Potem zadzwonić usługę reszta tak:

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

Teraz GraphQL masz tylko podstawowy adres URL i brak ścieżki usług. Również jeśli zapytań jak userid = 1 następnie trzeba wysłać jako post z parametrami ciele:

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

prostu nie jestem pewien, jak to przekłada się Retrofit

+1

trzeba by stworzyć ciało JSON zawierającego plik ' query', 'operationName' i' variables', a następnie ustawić Retrofit na POST, że JSON na serwer, do wyznaczonego adresu URL GraphQL. Nie jestem przekonany, że Retrofit przyniesie wiele korzyści, jeśli po prostu wykorzystamy OkHttp i Gson dla GraphQL. – CommonsWare

+0

Ok Widzę tutaj, jak utworzyć ciało JSON do modernizacji: http://stackoverflow.com/questions/21398598/how-to-post-raw-whole-json-in-the-body-a-retrofit- żądanie. Ale jaka powinna być ścieżka Post? tj. mam tylko bazowy URL dla mojego serwera Graphql. – Mike6679

+1

"Ale jaka powinna być ścieżka Post" - serwer GraphQL ma zwykle tylko jeden punkt końcowy. Tak więc użyj podstawowego adresu URL, który już masz, szczególnie jeśli kończy się na '/ graphql'. – CommonsWare

Odpowiedz

3

budynku Zapytania & odpowiedzi parsowania dla GraphQL jest nie jest proste. Jeśli używasz tego w projektach domowych, polecam zacząć odkrywać Apollo. Ten klient jest poważnie rozwinięty, ale możesz już go obejrzeć i grać.

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

I cieszył pracy z Apollo tak daleko, a tam są ładne rysy na ich harmonogramu: Integracja RxJava, Modernizacja, Subskrypcja i Wsparcie dla AutoValue