GraphQL Java Как получить строку запроса в классе преобразователя запросов?

#graphql #graphql-java

#graphql #graphql-java

Вопрос:

Я могу запустить Java-сервер Spring Boot GraphQL (с GraphiQL в качестве пользовательского интерфейса для запуска запроса). Теперь я пытаюсь передать строку запроса, переданную из GraphiQL (фактически запрос в полезной нагрузке, отправленный в конечную точку / graphql), в класс преобразователя запросов. Я пробовал разные варианты, но ничего не помогло.

 public class Query implements GraphQLQueryResolver {
...
public Iterable<Book> findAllBooks() {
    String query = ** WHAT TO DO?? **
    return bookRepository.findAll();
  }
}
  

Ответ №1:

Вы можете определить запрос с параметрами, а затем написать код Java в GraphQLQueryResolver

Например:

Схема

 type Query{
  findBookByTitle(title:String!):Book!
}
  

Преобразователь

 public Book findBookByTitle(String title){
  //you can get the title
}
  

Комментарии:

1. Я могу запустить приложение, отправить запрос и получить ответ обратно. Здесь я пытаюсь получить фактический запрос внутри метода Query.finaAllBooks(). Например, если мой запрос: { findAllBooks { id isbn title pageCount author { FirstName LastName } } }, то в моем фактическом запросе строки вопроса есть это.

Ответ №2:

В TypeScript я нашел полный запрос через info.operation.selectionSet.loc.source.body . и info происходит из https://www.apollographql.com/docs/apollo-server/data/resolvers/#resolver-arguments