d-exclaimation / pioneer

GraphQL for Swift.
https://pioneer.dexclaimation.com
Apache License 2.0
40 stars 8 forks source link

Working example using BananaCakePop with localhost for Pioneer? #46

Closed cshadek closed 2 years ago

cshadek commented 2 years ago

I was trying to get BananaCakePop's desktop Mac application to work with Pioneer as discussed in the docs. I did not change anything with CORS. Is this necessary? I'm not sure what I'm doing wrong. Thanks!

My endpoint info should be correct.

Screen Shot 2022-06-20 at 4 52 01 PM
cshadek commented 2 years ago

Every time it tries to fetch the schema it shows this error:

Screen Shot 2022-06-20 at 4 56 42 PM

And the logs show the following:

Screen Shot 2022-06-20 at 4 58 02 PM
d-exclaimation commented 2 years ago

CORS is enforced by the browser when making cross-origin HTTP requests initiated from scripts.

I am pretty sure you don't need to configure CORS for the desktop app of BananaCakePop.

Regardless, BananaCakePop is built with Electron. You should be able to view the DevTools (View / Toogle Developer Tools), check if CORS was applied, and inspect the network request made by the app.

I am not sure why you ran into issues with fetching the schema, I highly recommend checking the network activity and see why the introspection query failed

d-exclaimation commented 2 years ago

Looking at the error message, it seemed like Banana Cake Pop did manage to find the Vapor server but it was making a request to an unknown path / route.

You might want to check what path your GraphQL Server is served at. If you call server.applyMiddleware, you are able to set a path like (/api, /graphql) where the server is served at, the default is /graphql if you don't provide anything.

server.applyMiddleware(router, at: "...")

I have tried it on a simple example server and it worked fine.

Screenshot 2022-06-21 at 2 22 33 PM

This example server served GraphQL on http://localhost:8080/graphql.

cshadek commented 2 years ago

So I figured out what I was doing wrong.

I was originally doing this: server.applyMiddleware(on: app.grouped("main", "v1"))

I switched it to this: server.applyMiddleware(on: app.grouped("main"), at: "v1")

I didn't realize about the "graphql" default path. So I guess it was hosting it at http://localhost:8080/main/v1/graphql