Прежде всего я должен извиниться.Возможно, это глупый вопрос для начинающих, но постепенно я расстраиваюсь после того, как пролистал десятки уроков и вопросов ...
В чем проблема?У меня есть простая схема, похожая на следующую:
schema {
query: Query
}
type Query {
allVehicles: [Vehicle]!
allPersons: [Person]!
}
type Vehicle{
name: String!
}
Person{
name: String!
}
Теперь я пытаюсь разрешить различным классам разрешать запросы для человека и транспортного средства.Поэтому я создаю класс запросов для человека и один для автомобиля. Оба реализуют интерфейс GraphQLQueryResolver .
Чем у меня есть класс, который создает схему, и он выглядит следующим образом:
@WebServlet(urlPatterns = "/graphql")
public class GraphQLEndpoint extends SimpleGraphQLServlet {
public GraphQLEndpoint() {
super(buildSchema());
}
private static GraphQLSchema buildSchema() {
final VehicleRepository vehicleRepository = new VehicleRepository();
final PersonRepository personRepository = new PersonRepository();
return SchemaParser.newParser()
.file("schema.graphqls")
.resolvers(new VehicleQuery(vehicleRepository),
new PersonQuery(personRepository)),
.build()
.makeExecutableSchema();
}
}
Я могу запустить веб-приложение на моем сервере Jetty, но, поскольку я посещаю его из браузера, я получаю сообщения об ошибках, которые говорят мне, что функции allVehicles и allPersons не может быть найден.
(В других руководствах и проблемах у всех есть файлы .js, кроме их schema.graphqls, но я не понимаю, как они работают и зачем они нужны. В чем смысл?из schema.graphqls, если он не может позволить мне делегировать, какой класс должен обрабатывать соответствующие запросы.)
Так, пожалуйста, кто-нибудь может мне сказать, что я делаю неправильно?
Редактировать: Может быть, я должен показать вам один из классов запросов:
public class PersonQuery implements GraphQLRootResolver {
private final PersonRepository _personRepository;
public PersonQuery(
final PersonRepository pPersonRepository) {
this._personRepository = pPersonRepository;
}
public List<Person> allPersons() {
return _personRepository.getAllPersons();
}
}