aerogear / create-graphql

Command-line utility to build production-ready servers with GraphQL.
MIT License
440 stars 38 forks source link

[help]do not understand the schema design #18

Closed HaveF closed 7 years ago

HaveF commented 7 years ago

Thanks for your work about this repo. And I am not sure whether this is the right place to ask questions.

I'm relative new to graphql world, and know the basic of graphql, also read some apollo graphql things. But not quiet sure how to design real world schema, I notice the github graphql api has something like "Node", "edges", also include in your repo.

where are they come from? relay world? Could it possible not touch the relay instead of using apollo graphql and basic graphql knowledge to get insight of schema design?

thanks again

lucasbento commented 7 years ago

Hey @HaveF, you got it right, edges and nodes are only in the Relay specification, I'm not sure how Apollo handles that (cc @stubailo) but we are planning to support it pretty soon (#1).

Since you are starting with GraphQL, I strongly recommend Learn Relay which covers your doubts here and/or Learn Apollo, so you can get a more deep knowledge of how the strongest GraphQL clients work.

sibelius commented 7 years ago

I think we need to provide to options to start a new graphql server

create-graphql init --relay // relay related features create-graphql init --apollo // apollo related features create-graphql init // raw graphql

what do think of this @HaveF ?

stubailo commented 7 years ago

We're trying our best to make Apollo "Just GraphQL" and not require any special features of the server at all, so the plain init should suffice! While the Relay schema extensions provide some benefits I don't think they are sufficient to justify always following them as a default, when traded off against the extra complexity of using the API.

For example, connections can be a good pagination model for a variety of cases, but there are cases that they don't cover so you need a different model; on the other hand they sometimes make the API more complex for situations where a simple array would be enough.

Finally, I'd like to mention that Apollo works just fine with nodes and edges just like Relay does, it just doesn't require them.

HaveF commented 7 years ago

@lucasbento A great thanks for the link your provided, especially Learn Apollo, looks very nice which is what I needed after read almost apollo doc.

@sibelius Thanks for your comments, I read lots of commits of the apollostack/GitHunt-API, do like your devlog in it. Study a lot from it. Could you suggest more real world schema design for reference to practice graphql first design?

stubailo commented 7 years ago

@HaveF unfortunately there aren't a lot of resources out there for real-world schema design since most or all large schemas are private. We are thinking of making a public API for some of our products which will necessarily involve making the schema public.

lucasbento commented 7 years ago

I'm closing this for now, hope we helped you, @HaveF!

HaveF commented 7 years ago

Thanks @lucasbento , Thanks all of you! I should close this issue myself :laughing: I forget to do that