我想从Java中使用GitHub的GraphQL API,经过大量搜索后,我无法找到一个库或其他解决方案,让我以一种易于使用的方式完成此任务。
官方文档没有详细说明如何做到这一点。
如何使用GitHub的v4 API?我想基于API本身生成代码,以便我可以以编程方式使用它。
答案 0 :(得分:0)
我建议您尝试使用开源的失眠症。它使您能够从GraphQL查询自动生成Java代码,以供OkHttp库使用。
例如:
以下graphQL查询...
query GetIssues($client: String!
) {
organization(login: $client) {
name
repositories(last: 10) {
edges {
cursor
node {
name
url
description
}
}
}
}
}
...将生成以下Java代码段...
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/graphql");
RequestBody body = RequestBody.create(mediaType, "{\"query\":\"query GetIssues($client: String!) {\\n organization(login: $client) {\\n name\\n repositories(last: 10) {\\n edges {\\n cursor\\n node {\\n name\\n url\\n description\\n }\\n }\\n }\\n }\\n}\\n\",\"variables\":{\"client\":\"AniTrend\"},\"operationName\":\"GetIssues\"}");
Request request = new Request.Builder()
.url("https://api.github.com/graphql")
.post(body)
.addHeader("authorization", "Bearer YOU_BEARER_AUTH_HERE")
.build();
Response response = client.newCall(request).execute();
然后,如果您在查询中使用对GraphQL变量的了解并将其与对Java变量的了解相匹配,则应该可以修改RequestBody
字符串。这是一个简单又肮脏的解决方案,有很多改进的余地,我目前也在探索。在开发更强大的解决方案时,我将重新讨论这一点。