anmonteiro / reason-graphql-fullstack

Fullstack Reason + GraphQL Todo List App
MIT License
245 stars 19 forks source link

Suggestions #1

Open andreas opened 6 years ago

andreas commented 6 years ago

Thanks for sharing your code, @anmonteiro! πŸ™It's great to have some more examples out there.

Two quick suggestions/questions:

ozanmakes commented 5 years ago

@andreas

Could you use use HTTP server that ships with graphql-lwt, or does it lack some feature compared to the one you implemented? At a glance they seem quite similar.

I'm guessing it's because of the static file serving logic. I had to do something similar to customize the included GraphiQL page.

Is there a way to include the module and override the assets/route handlers without vendoring graphql_lwt?

anmonteiro commented 5 years ago

@osener that's indeed the reason; @andreas and I talked on Discord about it and I never responded in this issue.

Is there a way to include the module and override the assets/route handlers without vendoring graphql_lwt?

I think that's what this issue is for, correct me if I'm wrong: https://github.com/andreas/ocaml-graphql-server/issues/93

andreas commented 5 years ago

If I understand you correctly, what you're looking for is a way to compose the GraphQL HTTP handler with other routes. To that effect, Graphql_lwt.Server could expose a function with the following type

'ctx Graphql_lwt.Schema.schema ->
Cohttp.Request.t ->
Body.t ->
'ctx ->
(Cohttp.Response.t * Body.t) Lwt.t

Is it something like that you're looking for?

I don't consider andreas/ocaml-graphql-server#93 to be about such a function, that's simply moving the HTTP server to it's own OPAM package.

anmonteiro commented 5 years ago

That sounds like a good idea but I'd still put it in the separate package that https://github.com/andreas/ocaml-graphql-server/issues/93 is about.

If I wanna use ocaml-graphql-server with Httpaf, for example, I wouldn't want there to be Cohttp dependencies in the dependency I'm pulling.

andreas commented 5 years ago

@anmonteiro that makes sense πŸ‘