GraphQL实现Java

Shi*_*aba 7 java rest graphql

我有5个具有不同端点URL的其他API(java),并且每个都有不同的请求,响应格式.所以我将它们组合为一个具有公共JSON复杂请求和响应的单个API作为键值对结构.

现在T最近发现了关于GraphQL并且有兴趣将其纳入我的要求,我已经对此进行了分析,并想知道我能够如何实现我的一些问题:

1)我们可以在GRAPHQL中实现复杂的rest API服务(post)吗?(谷歌搜索时,只有简单的get方法.也只有node/javascript)

2)是否有基于java的graphQL实现的框架?

Ahm*_*ous 8

1)我们可以在GRAPHQL中实现复杂的rest API服务(post)吗?(谷歌搜索时,只有简单的get方法.也只有node/javascript)

既然你说你对GraphQL进行了分析,我假设通过"在GraphQL中实现复杂的REST API服务器(POST)",你就意味着如何通过GraphQL公开REST API的功能.是的,你可以通过使用GraphQL突变来做到这一点.在您的变异实现(解析函数)中,您将调用REST POST操作.

swapi-graphql是一个包装星球大战REST API的有趣项目.

2)是否有基于java的graphQL实现的框架?

查看awesome-graphql的 Java部分.但是,Java GraphQL库似乎没有得到很好的维护.


Mat*_*s M 5

问题 1) 在另一个答案中得到了回答。

问题 2)Java 实现:

示例代码:

public class HelloWorld {
    public static void main(String[] args) {
        GraphQLObjectType queryType = newObject()
            .name("helloWorldQuery")
            .field(newFieldDefinition()
                .type(GraphQLString)
                .name("hello")
                .staticValue("world"))
            .build();

        GraphQLSchema schema = GraphQLSchema.newSchema()
            .query(queryType)
            .build();

        GraphQL graphQL = GraphQL.newGraphQL(schema).build();

        Map<String, Object> result = graphQL.execute("{hello}").getData();
        System.out.println(result);
        // Prints: {hello=world}
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 请不要只是发布指向某个图书馆的链接作为答案。至少在答案本身中演示图书馆如何解决问题。 (3认同)
  • 我给你点赞了兄弟。上述评论完全无关紧要。 (3认同)
  • 此响应显示客户端使用情况。问题是关于暴露服务器端端点。 (2认同)