【发布时间】:2017-04-14 01:04:56
【问题描述】:
我是 GraphQL 的新手,但我已经使用 Retrofit 有一段时间了,它易于使用且速度快。就你如何传递数据而言,GraphQL 与 rest api 有很大不同。真的没有太多关于在 Android 中使用 GraphQL 的教程,我只能找到这个视频 (https://www.youtube.com/watch?v=P0uJHI7GjIc&t=1s) 但里面没有真正的代码。
在我当前的改造调用代码中,我设置了一个端点,如下所示:
final RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoint(endPoint)
.build();
T service = restAdapter.create(clazz);
然后我像这样调用休息服务:
@GET("/users/{login}")
Observable<Github> getUser(@Path("login") String login);
现在使用 GraphQL,您只有一个基本 url,没有服务路径。此外,如果您像 userId=1 一样查询,那么您必须作为带有 Body 参数的 Post 发送:
operationName: arbitrary name ,
query: "{users(userid:$userId){username}},
variables: "{"userId":1}"
我只是不确定这如何转化为改造
【问题讨论】:
-
您需要创建一个 JSON 正文,其中包含您的
query、operationName和variables,然后安排 Retrofit 将该 JSON POST 到服务器,发送到其指定的 GraphQL URL。我不相信 Retrofit 会比仅使用 OkHttp 和 Gson 为 GraphQL 带来更多好处。 -
好的,我在这里了解如何为改造创建 JSON 主体:stackoverflow.com/questions/21398598/…。但是 Post 路径应该是什么?即:我的 Graphql 服务器只有一个基本网址。
-
“但是 Post 路径应该是什么”——GraphQL 服务器通常只有一个端点。因此,请使用您已有的基本 URL,特别是如果它以
/graphql结尾。 -
我最终只使用了 OkHttp --- 在这种情况下更容易。