Search code examples
graphqlgraphql-java

Should I write two times each objects as 'input' and 'type' in a graphql schema file


I have to use a Java object in GraphQL in response as well as in request.

Should I have to write two times each objects as 'input' and 'type' in a GraphQL schema file? For getting that object in request as well as in response.

Should I define the same object two times with input and type?

file: test.graphqls

input Employee {
  id: Integer
  name: String
  dept: String
  active: String
}

type Employee {
  id: Integer
  name: String
  dept: String
  active: String
}

Solution

  • Yes, because the type system rules are very different for input and output types. Input types can not be unions, can not implement interfaces etc, so you can not simply use the same definition for both purposes.

    Moreover, you must give each type a unique name. So it should be Employee and EmployeeInput for example.