объединение схем серверов graphql - PullRequest
2 голосов
/ 04 мая 2019

Я пытаюсь создать архитектуру микросервиса graphql и хочу иметь возможность динамически обновлять свои схемы со свойствами других серверов.

Так, например, у меня есть служба library с этой схемой

type Query {
  movie: [Movie]
}

enum Status {
  IN_LIBRARY
  WISHLIST
}

type Movie {
  id: Int
  status: Status
}

И я хочу расширить объект фильма со свойствами из другого сервиса tmdb со следующей схемой

type Query {
  movie(filter: MovieFilter): [Movie]
}

type Movie {
  id: Int
  title: String
  tagline: String
  overview: String
  backdrop: String
  poster(width: Int): String
  budget: Int
  genre: [String]
  release(format: String): String
}

Я видел пару статей, где две схемы сшитывроде как, но они всегда предполагают наличие 2 удаленных графических серверов, тогда как я хочу запрашивать tmdb из library только по запросу.

Возможно ли это вообще?

Мой текущийНастройка для library выглядит следующим образом:

  var app = express();
  app.use(
    "/graphql",
    graphqlHTTP(async (req, res, graphQLParams) => ({
      schema: buildSchema(fs.readFileSync("assets/schema.graphql", "utf8")),
      rootValue: await server(req, graphQLParams),
      graphiql: true
    }))
  );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...