What makes GraphQL particularly appealing for microservices is a set of its core design principles:
• It is hierarchical : Most of the data these days is organized into hierarchical structures. To achieve congruence with such
reality, a GraphQL query itself is structured hierarchically.
• Strong -typing : Every application declares own type system (also known as schema). Each GraphQL query is executed within
the context of that type system whereas GraphQL server enforces the validity and correctness of such query before executing
it.
• Client -specified queries : A GraphQL server publishes the capabilities that are available for its clients. It becomes the
responsibility of the client to specifying exactly how it is going to consume those published capabilities so the given GraphQL
query returns exactly what a client asks for.
• Introspective : The specific type system which is managed by a particular GraphQL server must be queryable by the GraphQL
language itself.