簡體   English   中英

如何使用 Kickstart Spring Boot GraphQL 在邏輯上拆分我的 GraphQL 模式和解析器

[英]How do I logically split up my GraphQL schema and Resolvers with Kickstart Spring Boot GraphQL

目前,我所有的查詢解析器都在一個 Query 類和一個 Query 模式/類型下,如下所示:

schema {
    query: Query #I'd prefer UserQueries and OrganisationQueries
    mutation: UserMutations
    mutation: OrganisationMutations
}

type Query {
    fetchUser(email: String): User
    listOrganisations(max: Int): [GenericListing]
}

...

以及我在一節課中的所有查詢:

@Component
public class Query implements GraphQLQueryResolver {

    public List<GenericListing> listOrganisations (Integer max) {
        ...
    }

    public User fetchUser (String email) {
        ...
    }
}

我已經設法按用戶和組織拆分並在邏輯上分離我的突變!

@Component
public class UserMutations implements GraphQLMutationResolver {

    public User createUser(String firstname, String lastname, String email, String msisdn, String password) {
        ...
    }
}

我如何在邏輯上分離我的查詢 - 或者至少不在 Query 類中包含我的所有查詢。

如果要將用戶相關查詢與組織相關查詢完全分開,則:

  1. 將單個 .graphqls 文件拆分為單獨的文件:

用戶.graphqls

    schema {
        query: Query
        mutation: Mutation
    }
    type Query {
        fetchUser(email: String): User
    }
    ...

組織.graphqls

    schema {
        query: Query
        mutation: Mutation
    }
    type Query {
        listOrganizations(max: Int): [GenericListing]
    }
    ...
  1. 拆分解析器:
    @Component
    public class UserQuery implements GraphQLQueryResolver {
        public User fetchUser(String email) {
            ...
        }
    }
    @Component
    public class OrganizationQuery implements GraphQLQueryResolver {
        public List<GenericListing> listOrganisations(Integer max) {
            ...
        }
    }

此外,您可以使用 graphql-java-codegen 插件根據您的模式自動生成接口和數據類。 順便說一下,它支持多個架構文件:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM