Вопросы с тегами [graphql-java]

1

голосов
1

ответ
78

Просмотры

Какой graphql-весна-загрузка-стартер я должен выбрать?

Я думал о добавлении GraphQL функциональных возможностей моего приложения Spring загрузки. Я нашел, что есть два артефактов для этого. Одним из них является com.graphql-ява-Кикстарт: graphql-весна-загрузки-стартер, а другой com.graphql-Java: graphql-весна-загрузки-стартер. Какой я должен выбрать?
Jin Kwon
0

голосов
0

ответ
4

Просмотры

подписка на Java graphQL для IBM MQ Темы

Я новичок в graphQL и пытаюсь создать подписку на тему MQ. Я хочу на основе событий обновления, всякий раз, когда я получаю сообщение graphQL API должен закачает и показать обновления. Все указатели будут полезны для понимания подписок с JMS. Спасибо
Priya Tanwar
1

голосов
0

ответ
190

Просмотры

Spring загрузка graphql-Java, подписка и streamlisteners

Я пытаюсь создать наблюдаемую из ответа streamlistener, но не в состоянии сделать это. Я совершенно новой идее EventObservable и реактивная Java. Было бы полезно, если бы кто-то может заглянуть в мой код, чтобы увидеть, если он был построен правильный путь, и если мое понимание концепции находится на правильном пути. @Component общественного класса EventObservable {частное Наблюдаемого наблюдаемый = новый Наблюдаемый () {@Override защищен недействительный subscribeActual (наблюдатель
1

голосов
1

ответ
569

Просмотры

Spring + GraphQL - опция авторизации

Я в настоящее время использую Spring загрузки Starter и GraphQL Java Tools использовать GraphQL в моем Спринг приложении. Он хорошо работает вместе с моим фильтром авторизации, до тех пор, как я санкционировать graphql конечную точку. Теперь я хотел бы открыть определенные мутации или запросы общественности (таким образом, не требуется авторизация), и это, где я спотыкаться. Как я могу открыть graphql конечную точку, но все еще быть в состоянии использовать @PreAuthorize аннотацию Spring безопасности для авторизации на уровне метода? Другими словами: Можно ли иметь «дополнительный» разрешение на конечной точке? Это моя конфигурация: @Override защищена недействительная Configure (HttpSecurity HTTP) бросает исключение {log.debug ( "configureHttpSecurity"); // разрешить только запрос, если он не в permitAllEndpoints и соответствует API_ROOT_URL ИЛИ // MESSAGING_ROOT_URL Список requestMatchers = новый ArrayList (); requestMatchers.add (новый SkipPathRequestMatcher (permitAllEndpointList, API_ROOT_URL)); requestMatchers.add (новый AntPathRequestMatcher (MESSAGING_ROOT_URL)); OrRequestMatcher apiMatcher = новый OrRequestMatcher (requestMatchers); .antMatchers. http.csrf () отключить () .sessionManagement () .sessionCreationPolicy (SessionCreationPolicy.STATELESS) й () .authorizeRequests () (permitAllEndpointList.toArray (новая строка [0])) .permitAll () й () .authorizeRequests () .antMatchers (API_ROOT_URL, MESSAGING_ROOT_URL). аутентифицировано () й () .addFilterBefore (новый CustomCorsFilter (), UsernamePasswordAuthenticationFilter.class) .addFilterBefore (новый AuthenticationFilter (AuthenticationManager ()), UsernamePasswordAuthenticationFilter.class) .addFilterBefore (новый AuthorizationFilter (apiMatcher), UsernamePasswordAuthenticationFilter.class); } На apiMatcher это открыть определенные REST конечные точки. Это мой AuthorizationFilter: @Override attemptAuthentication общественного Authentication (HttpServletRequest HTTPServletRequest, HttpServletResponse HttpServletResponse) бросает AuthenticationException, IOException, ServletException {попробуйте {авторизации String = HTTPServletRequest. getHeader ( "Авторизация"); если (! авторизация = NULL && authorization.startsWith ( "Знаменосец ")) {вернуться getAuthentication (authorization.replace (" однонаправленного", "")); }} Поймать (ExecutionException е) {httpServletResponse.sendError (HttpServletResponse.SC_FORBIDDEN, «Предоставленный маркер либо не действует, или уже истек!»); возвращать нуль; } Поймать (IOException | InterruptedException е) {httpServletResponse.sendError (HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Была проблема проверки прилагаемого фишку!"); возвращать нуль; } HttpServletResponse.sendError (HttpServletResponse.SC_FORBIDDEN, "Несанкционированное"); возвращать нуль; } Если я не» т отправить сообщение об ошибке в конце attemptAuthentication я смог бы получить доступ к REST конечных точек, которые не должны быть открыты. Кроме того, если я просто разрешить GraphQL Endpoint то никакого разрешения не будет, и, таким образом, каждый @PreAuthorize не получится, даже если я предоставить действительный JWT. Может быть, что мой подход к этому уже не так. Если это так, то пожалуйста, дайте мне знать.
puelo
1

голосов
1

ответ
162

Просмотры

Макет ответа апи в graphql-Java

У меня есть graphql API, написанный с использованием graphql-Java-инструментов и graphql-Java. Я хочу, чтобы дразнить операцию запроса. Как я могу это сделать? Аполлон graphql-TOOLS единственный путь для достижения этой цели. Я гавань использоваться любой другая библиотека Apolo в моем проекте еще и не хотел идти по этому пути только за насмешливое обслуживание.
user3732317
1

голосов
0

ответ
199

Просмотры

Как создать клиент GraphQL запросов из .graphql файлов через com.graphql-Явы

Я расследую GraphQL с Java с помощью: - // https://mvnrepository.com/artifact/com.graphql-java/graphql-java-tools компилировать группа: 'com.graphql-ява', название: «graphql-Java- инструменты, версия: „5.2.4“ у меня есть несколько .graphql файлов, которые определяют различные типы моих и один .graphql файл определяют мои запросы. Я разработал код folloiwng, чтобы объединить все мои .graphql файлы и создать экземпляр исполняемой схемы государственной статической силы основных (конечная String [] арг) бросает IOException, URISyntaxException {окончательные пути List = новый ArrayList (); . (. - "graphql" путь> path.toString () EndsWith ()). Files.list (Paths.get ( "схемы")) фильтр Foreach (дорожки :: добавить); провода (дорожки); } Частных статических пустот провод (окончательный список путей) {конечная SchemaParser schemaParser = новый SchemaParser (); Окончательный SchemaGenerator schemaGenerator = новый SchemaGenerator (); Окончательный TypeDefinitionRegistry typeRegistry = новый TypeDefinitionRegistry (); для (окончательного пути Path: трактов) {typeRegistry.merge (schemaParser.parse (path.toFile ())); } Окончательный RuntimeWiring проводки = buildRuntimeWiring (); Окончательный GraphQLSchema graphQLSchema = schemaGenerator.makeExecutableSchema (typeRegistry, проводка); Окончательные GraphQLObjectType запросы = graphQLSchema.getQueryType (); Окончательный ObjectTypeDefinition objectTypeDefinition = queries.getDefinition (); } Частного статический RuntimeWiring buildRuntimeWiring () {вернуться RuntimeWiring.newRuntimeWiring () wiringFactory (новый EchoingWiringFactory ()) построить ()..; } Что хочет добиться того, чтобы произвести фактическую GraphQL запроса текстовой строки, например, как это: - { «operationName»: «testQuery», } Возможно ли это с помощью graphql-Java-инструментов? Используя этот код, я могу видеть мои запросы, содержащиеся в исполняемый объект схемы конечных запросов GraphQLObjectType = graphQLSchema.getQueryType (); Окончательный ObjectTypeDefinition objectTypeDefinition = queries.getDefinition (); System.out.println ( "queries.getDefinition () =" + objectTypeDefinition); System.out.println ( "queries.getFieldDefinitions () =" + queries.getFieldDefinitions ()); Что мне не хватает? out.println ( "queries.getFieldDefinitions () =" + queries.getFieldDefinitions ()); Что мне не хватает? out.println ( "queries.getFieldDefinitions () =" + queries.getFieldDefinitions ()); Что мне не хватает?
Hector
1

голосов
0

ответ
59

Просмотры

graphql-Java typewiring для модифицированной схемы

Я новичок в graphql. У меня есть следующие схемы и Runtimewiring в My API. Ниже определение схемы и отображение данных в Fetcher Runtimewiring работает отлично, и я в состоянии получить ответ от API. Рабочая схема: Схема {запрос: запрос} типа запрос {предоплаченного (mobilenumbers: [String]: [предоплата] фактурный (mobilenumbers: [! String]: [Постоплатный]} типа предоплаты {CustomerName: String databalance: String datavalidity: String} типа Postpaid {CUSTOMERNAME: Строка databalance: String amountdue: String} RunTime Электропроводка в моем Java коде для карт DataFetchers: возвращение RuntimeWiring .newRuntimeWiring () .type ( "Query", .typeWiring -> typeWiring .dataFetcher ( "предоплата", getPrepaidDetails) .dataFetcher ( «постоплатные», getPostpaidDetails)) .build (); Я хотел бы изменить структуру схемы, как показано ниже, а также я не хочу какую-либо datafetcher реализации «ServiceType». я просто хочу «ServiceType», чтобы быть более группирования в одиночку и по-прежнему хотят для того чтобы достигнуть этой структуры схемы. Но выше данный RuntimeWiring не для этого сценария. Модифицированная схема: Схема {запрос: запрос} типа запрос {ServiceType {предоплаченного (mobilenumbers: [Строка]: [предоплата] фактурный (mobilenumbers: [Строка]: [Постоплатный]}} тип Prepaid {CUSTOMERNAME: String databalance: String datavalidity : String} типа Postpaid {CUSTOMERNAME: Строка databalance: String amountdue: String} не могли бы вы предложить мне, как я должен сформулировать исполнительную Электропроводка для новой схемы, в которой я не будет иметь данных Fetcher реализацию для «ServiceType» в приведенном выше примере спасибо. где я не буду иметь реализацию данных Fetcher для «ServiceType» в приведенном выше примере. Спасибо где я не буду иметь реализацию данных Fetcher для «ServiceType» в приведенном выше примере. Спасибо
user5481107
1

голосов
1

ответ
202

Просмотры

graphql-Java-аннотаций: Аргумент должен быть аннотированный с @GraphQLName, в противном случае оно не будет

Если я не добавить @GraphQLName ( «имя»), то метод не будет распознаваться! (Версия: 0.13.2) @GraphQLField @GraphQLDataFetcher (MyDataFetcher.class) публичная Строка FindByName (@GraphQLName ( "имя") имя String) {возвращение нуль; }
JasonS
1

голосов
1

ответ
710

Просмотры

Извлечение всех детей принадлежит к конкретному родителю в graphql

Я использую GrapgQL и Java. Мне нужно извлечь все ребенок принадлежит к конкретному родителю. Я использовал ниже способ, но он будет получать только родитель и не получать никаких детей. Схема {запроса: Запрос} тип LearningResource {идентификатор: имя ID: тип Строка: строка детей: [LearningResource]} типа Query {fetchLearningResource: LearningResource} @Component общественного класса LearningResourceDataFetcher реализует DataFetcher {@Override общественного LearningResource получить (DataFetchingEnvironment dataFetchingEnvironment) {LearningResource LR3 = новый LearningResource (); lr3.setId ( "ID-03"); lr3.setName ( "Ресурс-3"); lr3.setType ( "Книга"); LearningResource LR2 = новый LearningResource (); lr2.setId ( "ID-02"); lr2.setName ( "Ресурс-2"); lr2.setType ( "бумага"); LearningResource LR1 = новый LearningResource (); lr1.setId ( "ID-01"); lr1.setName ( "Ресурс-1"); lr1.setType ( "бумага"); Список learningResources = новый ArrayList (); learningResources.add (LR2); learningResources.add (LR3); learningResource1.setChildren (learningResources); вернуться Lr1; }} Вернуть RuntimeWiring.newRuntimeWiring () тип ( "Query", typeWiring -> typeWiring.dataFetcher ( "fetchLearningResource", learningResourceDataFetcher)) построить ()..; Мой контроллер конечная точка @RequestMapping (значение = "/ тип_запроса", метод = RequestMethod.POST) публичное ResponseEntity запроса (@RequestBody Строка запроса) {System.out.println (запрос); ExecutionResult результат = graphQL.execute (запрос); System.out.println (result.getErrors ()); System.out.println (result.getData (). нанизывать()); вернуть ResponseEntity.ok (result.getData ()); } Мой запрос будет, как показано ниже {fetchLearningResource {имя}} Может кто-нибудь, пожалуйста, помогите мне разобраться в этом?
Kepler
1

голосов
1

ответ
290

Просмотры

NoClassDefFoundError when using SimpleGraphQLServlet.Builder

Я написал простой GraphQL Servlet на основе класса SimpleGraphQLServlet. Конструктор этого класса является устаревшим и рекомендуется использовать построитель вместо этого. Так что я сделал это, чтобы обеспечить свой собственный сервлет, который перенаправляет запросы к экземпляру SimpleGraphQLServlet, который может быть соорудив в методе инициализации моего сервлета: @WebServlet ( «/») graphql общественного класса GraphQLEndpoint расширяет HttpServlet {SimpleGraphQLServlet graphQLServlet; @Override защищен аннулируются служба (HttpServletRequest REQ, HttpServletResponse соответственно) бросает ServletException, IOException {graphQLServlet.service (REQ, соответственно); } @Override общественного недействительными инициализации () бросает ServletException {graphQLServlet = SimpleGraphQLServlet.builder (buildSchema ()) withInstrumentation (новый TracingInstrumentation ()) построить ()..; } Частная GraphQLSchema buildSchema () {/ * ... * /}} Однако, когда создается экземпляр SimpleGraphQLServlet следующее исключение: java.lang.NoClassDefFoundError: graphql / выполнения / Измерительные приборы / NoOpInstrumentation в graphql.servlet.SimpleGraphQLServlet $ Builder (SimpleGraphQLServlet.java:134) ~ [graphql-Java-сервлет-4.7.0.jar: на]. что странно, как класс, кажется, будет доступна в банку файл graphql-Java-8.0.jar. Я объявил следующие зависимости: Зависимости {компиляции "com.graphql-Java: graphql-Java: 8.0" компилировать "com.graphql-Java: graphql-Java-инструменты: 4.3.0" компилировать «com.graphql-Java: graphql- Java-сервлет: 4.7.0" компилировать "org.slf4j: SLF4J-простой: 1.7.25" testCompile "JUnit: JUnit: 3.8.1" providedCompile «javax.servlet: javax.
Dominik
1

голосов
2

ответ
231

Просмотры

Несовместимость Spring загрузки 2 и GraphQL

Я хочу, чтобы проверить Spring Ботинок 2 и GraphQL. Моя pom.xml выглядит следующим образом: graphql Демонстрационный проект Spring Ботинок с GraphQL org.springframework.boot весна-загрузки-стартер-родителя 2.0.3.RELEASE UTF-8 UTF-8 1,8 org.springframework.boot весна-загрузки starter- данные JPA org.springframework.boot весна-загрузка стартер веб com.h2database h2 выполнение org.projectlombok Ломбки истинной org.springframework.boot весна-загрузка-стартер-тест тест-com.graphql Java graphql-весна-загрузка-стартер 4.3.0 com.graphql-ява graphql-Java-инструментов 5.2.0 ком. graphql-ява graphiql-весна-загрузка стартер 4.3.0 При запуске проекта он работает нормально. Тогда я хочу, чтобы проверить сайт graphiql и поставить некоторые вопросы для тестирования. Но в консоли моего IDE есть исключение, и схема не загружается на GraphiQL-странице. 2018-07-16 11: 13: 53,602 ИНФО 16448 --- [NiO-8080-Exec-8] graphql.servlet.GraphQLServlet: запрос Плохой ПОСТ: синтаксический не удалось java.lang.IllegalStateException: Невозможно обработать детали, как не мульти- конфигурация часть была представлена ​​на org.apache.catalina.connector.Request.parseParts (Request.java:2826) ~ [встраивать-кот-ядро-8.5.31.jar: 8.5.31] в org.apache.catalina.connector .Request.getParts (Request.java:2793) ~ [встраивать-кот-ядро-8.5.31.jar: 8.5.31] на org.apache.catalina.connector.RequestFacade.getParts (RequestFacade.java:
Jonas Wolff
1

голосов
1

ответ
121

Просмотры

Добавить graphql обертками вокруг REST API?

Может кто-нибудь, пожалуйста, объясните мне, как обернуть существующий REST API в graphql, и как это улучшит производительность? Любой малый рабочий пример поможет многое. Заранее спасибо !!!
Abhii
1

голосов
1

ответ
270

Просмотры

Changing default data fetcher behavior for graphql-java

Я делаю проект проверки концепции с использованием graphql-Java для реализации бэкэнда интерфейса GraphQL. В моем проекте, сохранение слой я извлечение данных из является собственностью API, который имеет карту типа операции, и я хотел бы писать пользовательские данные выборки логики против этого патентованного API. Электропроводка выполнения моего запроса корневого уровня выглядит примерно так: RuntimeWiring проводка = newRuntimeWiring () .Type ( "запрос", строитель -> строитель .dataFetcher ( "myQuery", новый MyQueryFetcher ())) .build (); Метод Get () в настоящее время возвращает экземпляр класса под названием PersistenceStore.Node, и этот объект имеет карту, как методы доступа, которые я могу назвать в последующих fetchers данных. Но я не смог получить данные сборщика проводной вверх право обрабатывать эти последующие выборки. В примере выше, я хотел бы иметь запрос, такие как следующий: запрос {myQuery {ID, название, описание}} Я хотел бы класс MyQueryFetcher, показанный выше во время выполнения проводки возвращать экземпляр PersistenceStore.Node. Тогда я хотел бы ссылки на идентификатор, имя и описание полей, которые будут решены с помощью другой реализации Fetcher пользовательских данных, которые я создаю. Я пытался добавить сборщик данных по умолчанию для моей проводки: RuntimeWiring проводки = newRuntimeWiring () .type ( "запрос", строитель -> строитель .defaultDataFetcher (новый PersistenceStoreNodeFetcher ()) .dataFetcher ( "myQuery", новый MyQueryFetcher ()) ) .build (); но это не появляется на работе - метод получить класс PersistenceSAtoreNodeFetcher никогда не вызывается. Я' ве рытья через graphql-Java документацию и исходный код, но не нашли ничего еще. Любая идея, как я могу заменить или изменить поведение PropertyDataFetcher с Сборщиком моего собственного дизайна?
Tim Dean
1

голосов
1

ответ
357

Просмотры

Как группировать по результату запроса Graphql

У меня есть поле имя, которое либо быть «Class1» или «Class2». Я wan't группировать эти данные таким образом, что я могу иметь Class1 и данные class2 разделены. Есть ли способ сделать это. Я мог бы добиться этого, выполнив 2 отдельных запросов, предоставляя имя фильтра, но позволяет сказать, что у меня нет такой возможности. Я хочу, чтобы преобразовать результат следующим образом { "данные": { "Результат": [ "Class1": [{ "код": "ST1", "Описание": "Значение"}, { "код": "ST2" , "описание": "Значение"}] "Class2": [{ "код": "FS1", "описание": "Значение"
Learning Curve
1

голосов
1

ответ
241

Просмотры

graphql мутации, используя входной объект

Я использую graphql клиент APOLLO для Android. Я в состоянии передавать данные с помощью мутации для одного полея без какого-либо вопроса. При использование ввода объекта в мутации ошибки не может прочитать свойство электронной почты не определенно место. Но это же graphql работает во время работы в браузере. Graphql мутация Мутации регистрация ($ SignupInput: SignupInput) {Новенькие (данные: $ SignupInput) {результат {маркер, ПгвЬЫат, LastName, profileImage}}} Ввод { "SignupInput": { "Имя": "Джон", "LastName": "Питер", "электронная почта": "[email protected]", "пароль": "123123"}} Java код для API вызова окончательный SignupInput signupInput = SignupInput.builder () .firstName (edtSignUpName.getText () ToString (. )) .lastName (edtSignUpLastName.getText (). . ToString ()) .EMAIL (actvSignUpEmail.getText () ToString ()) .password (edtSignUpPassword.getText () ToString ()) .profileImage ( "dasfasdfasdf.png") построить ()..; Окончательный SignupMutation signupMutation = SignupMutation.builder () .signupInput (signupInput) .build (); signupCall = appController.apolloClient () .mutate (signupMutation); signupCall.enqueue (dataCallback); apolloClient () .mutate (signupMutation); signupCall.enqueue (dataCallback); apolloClient () .mutate (signupMutation); signupCall.enqueue (dataCallback);
Siva Sonai
1

голосов
1

ответ
0

Просмотры

GraphQL SPQR: id shall not be shown at creation

Я использую GraphQL SPQR с лица @Entity общественного класса MyEntity {@Id @GeneratedValue (стратегия = GenerationType.AUTO) частное UUID ид; @GraphQLNonNull @GraphQLQuery (имя = «а», описание = «Любое поле») частное строка; // Получатели и сеттеры} и служба @Service @Transactional общественного класса MyService {@Autowired частное MyRepository myRepository; @GraphQLMutation (имя = "CreateEntity") публичное MyEntity CreateEntity (@GraphQLArgument (имя = "объект") MyEntity объект) {myRepository.save (юридическое лицо); вернуть объект; }} В GraphiQL я позволил установить ID: мутацию {CreateEntity (объект: {идентификатор: "11111111-2222-3333-4444-555555555555" а: "любое значение" }) {ID}} Но идентификатор не должен быть редактируемым для пользователя, поскольку он будет перезаписан БД. Оно должно быть показано только в запросах. Я попробовал и добавил @GraphQLIgnore, но идентификатор показывается все равно. Как можно скрыть идентификатор при создании?
Johannes Flügel
1

голосов
1

ответ
1.6k

Просмотры

Java GraphQL - значения Pass поля к решающему для объектов

Ищу передать значение поля для разрешенного поля с использованием другого типа объекта. Другой способ поставить его, если у меня есть `Customer> Пользователь> Профиль» - как я могу передать значение поля CustomerID, которое было бы в клиента профиль в качестве аргумента или переменной для того, чтобы правильно решить?
bdparrish
1

голосов
1

ответ
426

Просмотры

Как получить Query / мутацию имя операции

Я новичок в Spring ботинок + GraphQL. Мне нужно, чтобы получить имя операции Query / мутации внутри моего класса контроллера. Цель: Необходимость грандиозных разрешений для некоторых пользователей к конкретным операциям мутации / Query. Здесь тип пользователя будет передан в качестве заголовка запроса и будет проверяться и проверить, разрешено ли пользователю доступ к этой операции. @PostMapping общественного ResponseEntity callGraphQLService (@RequestBody Строка запроса, @RequestHeader ( "пользователь") Строка Username) {результат ExecutionResult = graphService.getGraphQL (). Выполнить (ExecutionInput.newExecutionInput () .query (запрос) .context (Username) .build ()); вернуть новый ResponseEntity (результат, HttpStatus.OK); } Подсказать эффективный механизм для выполнения авторизации для конкретного запроса / Мутации
Rahul
1

голосов
1

ответ
1.7k

Просмотры

Преобразование объекта Java в объект GraphQL, чтобы вернуть ответ

Я использую библиотеку GraphQL Java в проекте, и я пытаюсь вернуть желаемый результат в пользовательском DataFetcher. Как именно я построить объект ответа? Насколько я знаю, я не ожидал, чтобы просто написать строку ответа в формате. Там должно быть лучше, чтобы присвоить значения запрашиваемых полей. прибудет общественный объект (DataFetchingEnvironment среда) {Integer Идентификатор = environment.getArgument ( "ID"); // Информация о процессе и получить результаты // Что следует возврат объекта быть? возвращать результат; }
elenaHristova
1

голосов
1

ответ
335

Просмотры

Maven и graphql-ява

Я пытаюсь запустить пример HelloWorld из http://graphql-java.readthedocs.io/en/stable/getting_started.html#hello-world у меня есть проблемы компиляции: Информация: Java: произошла ошибка при компиляции информации о модуле «graphqlApp»: Javac 1.8.0_131 был использован для компиляции исходных файлов Java Информация: 25.07.17 22:41 - компиляция укомплектованный 17 ошибок и 3 предупреждений в 1s 873ms Внимание: Java: исходного значения 1,5 является устаревшим и будет удален в будущем Предупреждение выпуска: Java : целевое значение 1,5 является устаревшим и будет удален в будущем Предупреждение выпуска: Java: Для того, чтобы подавить предупреждения об устаревших вариантов, используйте -Xlint: -options. /home/marcin/graphqlApp/src/main/java/HelloWorld.java Ошибка: (1, 15) Java: пакет graphql не существует: Ошибка (2, 22) Java: пакет graphql.schema не существует Ошибка: (3 , 22) Java: пакет graphql.schema не существует Ошибка: (7,
Marcin
1

голосов
1

ответ
357

Просмотры

Поддерживаются WebSockets в GraphQL?

Есть ли WebSockets поддержки GraphQL-Java? Похоже, она не поддерживается. Я не могу найти какую-либо информацию по этому вопросу, так что любая помощь будет очень высокую оценку.
BigBug
1

голосов
1

ответ
220

Просмотры

Проблема с обнажая запрос в GRAPHQL-JAVA

Я новичок в Graphql-Java, я пытаюсь загрузить два * .graphqls файл как массив и схемы. Каждая схема имеет определенный отдельный запрос. После запуска сервера, я вижу только запрос в последний файл был подвергается. Мой код ниже. A.graphqls Тип запрос {queryOne (пары: Param): ResponseOne queryTwo (пары: Param): ResponseTwo} B.graphqls Тип запрос {queryThree (пары: Пары, param1: Param1): ResponseThree} Я вижу только "queryThree" получил подвергается , Я загрузка, как показано ниже. Строка [] graphlList = новый String [] { "graphqls / A.graphqls", "graphqls / B.graphqls"}; GraphQLSchema gSchema = NULL; SchemaParser schemaFile = SchemaParser.newParser () .files (graphlList) .resolvers (все резольверы иди сюда). словарь (все Справочник иди сюда) .scalars (все определяемый пользователем скалярной определено здесь.) .build (); gSchema = schemaFile.makeExecutableSchema (); вернуться gSchema; Пожалуйста, выделите, где я делаю неправильно.
KrishnaFJ
1

голосов
1

ответ
223

Просмотры

graphql-переменной Java обязательно (обязательно) в программно созданной схемы

Я новичок в GraphQL и graphql-Явы. Я пытаюсь создать эту схему программно ввести запрос {имя: Строка} Я не знаю, как сделать имя поле не является пустой строкой! По умолчанию это не является обязательным. GraphQLObjectType тип_запроса = GraphQLObjectType.newObject () .name ( "Запрос") .field (GraphQLFieldDefinition.newFieldDefinition () .name ( "имя") .type (Scalars.GraphQLString) .dataFetcher (новый StaticDataFetcher ( "Джо"))). построить ();
Doua Beri
1

голосов
1

ответ
431

Просмотры

Как добавить пользователя в graphql контекст / выборки данных из среды RestController

У меня есть контроллер весной отдых с одной конечной точкой, чтобы получить все запросы graphql запроса / мутацию. конечная точка выглядит, как показано ниже @RequestMapping (значение = "/ тест", метод = RequestMethod.POST) публичное ResponseEntity TestService (@RequestHeader ( "пользователь") строка имя, @RequestBody Строка запрос) {результат ExecutionResult = graphQL.execute (запрос) ; } Я правильно настроить свой объект graphql. Как я могу передать имя пользователя из заголовка запроса на graphql запроса таким образом, данные сборщика могут получить его для обновления userModified информации?
user3732317
1

голосов
1

ответ
149

Просмотры

Что должно graphql определения схемы для класса страницы выглядит?

поэтому у меня есть этот класс в Котлин: @Component класс UserResolver @Autowired конструктор (частный вал UserService: UserService): GraphQLMutationResolver, GraphQLQueryResolver {весело CreateUser (Пользователь: Пользователь): User {userService.save (пользователь) возвращает пользователя} весело пользователей () : Page {вал выгружаемого = QPageRequest (0, 10) вернуться userService.all (выгружаемый)}} Я хочу, чтобы пользователи метод, чтобы вернуть объект страницы, я совершенно новым для graphql. Я пытался что-то вроде этого: тип страницы {номер: Int Размер: Int numberOfElements: содержание Int: [] hasContent: Boolean IsFirst: Boolean isLast: Boolean hasNext: Boolean hasPrevoius: Boolean TOTALPAGES: Int totalElements: Поплавок}, но моя весна загрузки приложение не в состоянии начать, у меня нет никаких идей, что мое определение схемы для этого класса https: //docs.spring. -й / пружинные данные / Обще / документы / ток / апи / орг / springframework / данные / домен / page.html должен выглядеть. Кто-нибудь есть идеи? Edit: ошибка: Bean конкретизации с помощью фабричного метода не удалось; вложенное исключение составляет org.springframework.beans.BeanInstantiationException: Не удалось создать экземпляр [com.coxautodev.graphql.tools.SchemaParser]: Фабрика метод «schemaParser» бросили исключение; вложенное исключение составляет com.coxautodev.graphql.tools.TypeClassMatcher $ RawClassRequiredForGraphQLMappingException: Тип org.springframework.data.domain.Page не может быть сопоставлен с типом GraphQL! Поскольку GraphQL-Java занимается стертыми типами во время выполнения, только непараметризированные классы могут представлять собой тип GraphQL. Это позволяет обратный поиск по классам Java в интерфейсах и типах союза.
Matúš Bartko
1

голосов
0

ответ
31

Просмотры

как проверить или обнаружить Addtional параметр запроса в граф-QL Java?

Мы используем GraphQL Java для нашего сервера GraphQL. наш случай использования для проверки дополнительного параметра запроса и запроса в два ошибках мутации: мутация {actionHandler (действие: «статус», сущности: «интеграция», идентификаторы: [1], значение: «Run») {результат}} OR 1 = 1 класс схемы: класс ActionHandler общественное {частное лицо строки; частные действия Строки; частное значение строки; частные Идентификаторы Список; Результат частного списка; } Выше запрос, имеющий дополнительный параметр запроса OR 1 = 1. они не являются частью определенной схемы. заметьте это было дано для проверки уязвимости атаки, используя логическое состояние. выше запрос дает те же результаты, как запрос фактической схемы дает ожидаемый / запрос Фактическая схемы: мутации {actionHandler (действие: «статус», сущности: «интеграции», идентификаторы: [1], значение: «Run» ) {Результат}} вводится дополнительное условие булева (OR 1 = 1) в качестве параметра не манипулирование результатов запроса. это, кажется, те были проигнорированы при Graph QL родной парсер новообращенный мутации запрос в соответствующий объект схемы. как мы можем проверить дополнительный входной параметр, используя сам, которые не являются частью запроса схемы GraphQL родной LIB?
aaresha
1

голосов
1

ответ
36

Просмотры

AssertValidName бросает на имя предположительно генерируемое самой библиотеки

Это использует довольно сложную коллекцию сущностей, которые в основном состоят из JPA сущностей, но которые также включают в себя прокси и объекты, получаемые от API. Я только действительно аннотированный базовый класс, который я пытаюсь принести с @GraphQLQuery аннотаций, но она идет в иерархии ниже, что и в какой-то момент находит свойство, которое является статическим HashMap с закодированных содержимым. (Я узнал не спросить ...) На данный момент он бросает это исключение, и все останавливается: graphql.AssertException: Имя должно быть нулевым, не пусто и матч [_A-Za-Z] [_ 0-9A -Za-г] * - был 'Map_String_String [] Скалярное' в graphql.Assert.assertValidName (Assert.java:58) при graphql.schema.GraphQLScalarType (GraphQLScalarType.java:50) в graphql.schema.GraphQLScalarType (GraphQLScalarType.. .java: 45) при io.leangen.graphql.util.Scalars.graphQLMapScalar (Scalars.java: Я бы аннотировать свойство с @GraphQLQuery (имя = «somethingClever»), но в данный момент мы находимся внутри библиотеки совместно по всей компании, а также изменения, сделанные здесь, должны пройти через запрос на изменение и прочее. Я попытался исключить этот прокси-пакет с withBasePackages, но, казалось, не имеют никакого эффекта. Это метод пытается создать схему: GraphQLSchema схемы = новый GraphQLSchemaGenerator () .withBasePackages ( "лицо") .withResolverBuilders (новый AnnotatedResolverBuilder ()) .withOperationsFromSingleton (examService) .withValueMapperFactory (новый JacksonValueMapperFactory ()) .generate (); graphQL = GraphQL.newGraphQL (схема) .build (); Кто-нибудь видел любой из этих проблем раньше? Могу ли я черный список пакет вместо белого списка его? например withBasePackages ( "!") прокси
tofagerl
1

голосов
1

ответ
75

Просмотры

GraphQl Uslug модели шлюза

1) Шлюз шаблон из EAA Каталог Сложность «бизнес microservices» был скрыт с помощью шаблона шлюза. Этот компонент отвечает за надлежащее перенаправление запросов к соответствующим службам на основе конфигурации. Применение внешнего интерфейса может взаимодействовать только с этим компонентом. Ссылка: https://martinfowler.com/eaaCatalog/gateway.html Мне интересно, как GraphQl может обрабатывать эту модель? Как мы можем реализовать эту модель, если мы имеем одну GraphQl конечной точки за microservice? В ответ на ответ - Edit: В моем проекте есть архитектура, то есть шлюз, и Zuul посылает его на другой (он знает по URL из запроса). GraphQl это одна конечная точка так Zuul не будет работать. Таким образом, у нас есть только два шага (всегда - можно проверить, что в Цыпкин, например), как: Шлюз microservice -> Microservice X Относительно: Может быть, вы реализуете другой GraphQL API, которые консолидируют этот microservices «ы GraphQL API То есть так, как я думал. В моем проекте только API шлюз будет доступен в Интернете. Но в данном случае мне интересно, если мы получили в запросе, как, 5 запросов к microservice A и 3 запросов к microservice B, как я могу передать их в этом microservice шлюз - я не хочу, чтобы сократить его по частям, так что я пошлю один за другим (сумма до 3-х) запросов к microservice B из него - но 3 в одном кадре. То же самое относится и к microservice А -> Я хочу, чтобы отправить из graphQL в одном кадре. Если я использую только эти: com.graphql-Java graphql-весна-загрузки-стартер 5.0.2 com.graphql-Java graphiql-пружинный загрузочный стартер 4.0.0 Затем в microservice XI получил схему и некоторые вопросы, как: Тип запроса {getAllItems: [TestEntity] getDataTypes: [DictionaryType] (...)} А в контроллере у меня есть: частный DataFetcher allDictionaryItemsFetcher; частный DataFetcher dictionaryTypeFetcher; @Value ( "путь к классам: test.graphqls") частный ресурс schemaResource; частный GraphQL graphQL; (...) allDictionaryItemsFetcher = dataFetchingEnvironment -> dictionaryService.getAllDictionaryItemsAsStrings (); dictionaryTypeFetcher = dataFetchingEnvironment -> dictionaryService.getDictionaryTypes (); @PostConstruct личного недействительного loadSchema () бросает IOException {File schemaFile = schemaResource.getFile (); TypeDefinitionRegistry реестра = новый SchemaParser () синтаксический (schemaFile). RuntimeWiring проводки = buildWiring (); GraphQLSchema схема = новый SchemaGenerator () makeExecutableSchema (реестр, проводка). graphQL = GraphQL.newGraphQL (схема) .build (); } Частный RuntimeWiring buildWiring () {вернуться RuntimeWiring.newRuntimeWiring () .тип ( "Query", машинописи -> наборщика текста в .dataFetcher ( "getAllItems", allDictionaryItemsFetcher) .dataFetcher ( "getDataTypes", dictionaryTypeFetcher)) .build (); } Тогда, если мы делаем шлюз microservice с теми же depedencies относительно GraphQl мы будем иметь в схеме: тип запроса {getAllItems: [TestEntity] # из getDataTypes microservice A: [DictionaryType] # из microservice A (...) # Другое из microservice A , B, C, (...)} Тогда, если пользователь посылает в одном запросе получить меня getAllItems и getDataTypes из Microserivce а и получить Z ресурсов из microservice B, как я могу отправить два запроса: сначала с getAllItems и getDataTypes к Microservice Второй с Z запросы tomicroservice B? Как я могу GraphQL запросы раздельный таким образом? Я не хочу, чтобы отправить reuqests один на один - например, когда я получаю: принеси мне getAllItems и getDataTypes из Microserivce А я не хочу называть дважды Microservice А один раз: getAllItems и второй раз с getDataTypes. Как я могу легко запросы раздельный только microservice? Например сделать много схем (по одному на microservice) inGraphQL gatewayandconfiguringone конечной точки с manyschemas` - это возможно? Или какой-то другой способ решить эту проблему? Может быть, речь идет о моем недоразумением GraphQL но я думаю, что в случае, описанном выше, мы должны configue один GraphQl за microservice в Java. Я не хочу, шлюз GraphQL, который стреляет в microservice X с классическим REST API (не GraphQL),
yami
1

голосов
2

ответ
1.2k

Просмотры

Graphql контроллер Остальное

Я новичок в graphql. Я хочу осуществить бэкенд весной загрузки с помощью graphql. Я до сих пор путают о endpints. Так что, если у меня есть пользователь 2 Сущности и продукт. так что я должен реализовать 2 конечные точки @RequestMapping (значение = "/ graphql / пользователь", метод = RequestMethod.POST, производит = "приложения / JSON") общественного GraphQLResponse GetService (@RequestHeader HttpHeaders заголовки, @RequestBody GraphQLRequest graphql) {GraphQLResponse выполнить = graphQLService.execute (заголовки, graphql); вернуться выполнить; } Как этот для пользователя и другой для продукта. или только один.
shagun
14

голосов
2

ответ
1.3k

Просмотры

Почему DataFetcher не вызывается в этой установке GraphQL?

Я хочу написать кусок кода, который будет обрабатывать запросы GraphQL как эти: запрос {группа (ID: "com.graphql-Java") имя (имя: "graphql-Java") версии (идентификатор: "2.3.0" )} Я создал сборщик данных и поставить точку останова внутри Получ: импорт graphql.schema.DataFetcher; импорт graphql.schema.DataFetchingEnvironment; общественный класс TestDataFetcher реализует DataFetcher {публичный объект получить (окончательный DataFetchingEnvironment dataFetchingEnvironment) {возвращение нуль; }} Затем я написал следующий код: общественный класс Example02 {государственной статической силы основных (конечная String [] арг) броски IOException {окончательное Example02 приложение = новый Example02 (); app.run (); } Недействительным запуска () бросает IOException {окончательное TestDataFetcher testDataFetcher = новый TestDataFetcher (); Конечные поля Список = Lists.newArrayList (createGroupField (testDataFetcher), createNameField (), createVersionField ()); Окончательный GraphQLObjectType тип_запрос = newObject () .name ( "запрос") .полей (поля) .build (); Окончательный GraphQLSchema схема = GraphQLSchema.newSchema () .query (тип_запрос) .build (); Окончательная Строка запрос = FileUtils.readFileToString (новый файл ( "SRC / основные / ресурсы / query1.txt"), "UTF-8"); Окончательный результат Карты = (Карта) Новый GraphQL (схема) .Execute (запрос) .getData (); System.out.println (результат); .} Частный GraphQLFieldDefinition createVersionField () {вернуться newFieldDefinition () тип (GraphQLString) .name ( "вариант") построить (). .} Частный GraphQLFieldDefinition createNameField () {вернуться newFieldDefinition () тип (GraphQLString) .name ( "имя") построить (). } Частная GraphQLFieldDefinition createGroupField (TestDataFetcher testDataFetcher) {конечная GraphQLArgument idArg = newArgument () имя ( "ID") Тип (GraphQLString) .build ()..; вернуть newFieldDefinition () .Type (GraphQLString) .name ( "группа") .dataFetcher (testDataFetcher) .argument (idArg) .build (); }} При запуске основного метода в режиме отладки, точка останова не активируется. Зачем? Как я могу это исправить?
DP_
3

голосов
1

ответ
1.9k

Просмотры

spring boot starter graphql not working

I recently started working with graphql and found it very intriguing. Since most of my rest apps were in java, I decided to do a quick setup using the provided spring boot starter project by the graphql-java team. It comes with graph-iql autoconf spring setup, which makes it easier to query /graphql endpoint. After spending a few good hours on the project setup in IDEA, I was able to run the graphql-sample-app. But I think my servlet is still not enabled, and only the graphiql endpoint is running, as the default query is returning 404. This is application.yml: spring: application: name: graphql-todo-app server: port: 9000 graphql: spring-graphql-common: clientMutationIdName: clientMutationId injectClientMutationId: true allowEmptyClientMutationId: false mutationInputArgumentName: input outputObjectNamePrefix: Payload inputObjectNamePrefix: Input schemaMutationObjectName: Mutation servlet: mapping: /graphql enabled: true corsEnabled: true graphiql: mapping: /graphiql enabled: true This is what my build.gradle file looks like: buildscript { repositories { maven { url "https://plugins.gradle.org/m2/" } maven { url 'http://repo.spring.io/plugins-release' } } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:1.5.2.RELEASE") classpath "com.jfrog.bintray.gradle:gradle-bintray-plugin:1.6" } } apply plugin: 'java' apply plugin: 'org.springframework.boot' repositories { jcenter() mavenCentral() } dependencies{ // compile(project(":graphql-spring-boot-starter")) // compile(project(":graphiql-spring-boot-starter")) compile 'com.graphql-java:graphql-spring-boot-starter:3.6.0' // to embed GraphiQL tool compile 'com.graphql-java:graphiql-spring-boot-starter:3.6.0' compile "com.embedler.moon.graphql:spring-graphql-common:$LIB_SPRING_GRAPHQL_COMMON_VER" compile("org.springframework.boot:spring-boot-starter-web") compile("org.springframework.boot:spring-boot-starter-actuator") testCompile("org.springframework.boot:spring-boot-starter-test") } jar.enabled = true uploadArchives.enabled = false bintrayUpload.enabled = false After running gradle build, I run the generated jar file from the terminal. This is what I get on localhost:
faizanjehangir
4

голосов
3

ответ
5.2k

Просмотры

GraphQL ява бэкенд начала работы [закрыт]

Я пытаюсь сделать graphQL Java бэкенд на моем веб-приложение, которое использует Spring MVC, и я обращусь, чтобы с помощью Maven или Gradle при получении все разобрали. Он чувствует, как я попробовал все, чтобы получить бэкэнд и работает, но не могу управлять, чтобы понять это. Я попытался todomvc-реле-Java и при его запуске я просто получить 415 неподдерживаемый приложение Media Type / х-WWW-форм-urlencoded при попытке получить схему и нулевой результат при попытке получить TODO или пользователя. Я также попытался весенне-загрузочный стартером, где я не могу получить зависимость прямо при попытке включить его в проекте и при включении .jar-файлов, которые я получаю сообщение об ошибке, потому что он не может найти классы, которые будут импортированы. При попытке запустить проект, как в терминале с Gradle bootRun он застрять на 95%, и когда я экспортировать его как военный файл я могу получить grapiql graphick работает, но я не могу делать какие-либо вопросы. Если я пытаюсь запустить только образец-приложение в терминале он жалуется на отсутствующие пакеты, которые находятся в родительской папке. Кто-нибудь есть какие-либо идеи, что я делаю не так? Я упал, как придурок, когда я не могу даже получить готовый проект и работает. Есть ли простой Getting Started руководства или что-нибудь там, что я пропустил? Я гугл так много, но до сих пор не нашел ничего, что заставляет меня работает, я начинаю думать, что это я, что это глупо. Кто-нибудь есть какие-либо идеи, что я делаю не так? Я упал, как придурок, когда я не могу даже получить готовый проект и работает. Есть ли простой Getting Started руководства или что-нибудь там, что я пропустил? Я гугл так много, но до сих пор не нашел ничего, что заставляет меня работает, я начинаю думать, что это я, что это глупо. Кто-нибудь есть какие-либо идеи, что я делаю не так? Я упал, как придурок, когда я не могу даже получить готовый проект и работает. Есть ли простой Getting Started руководства или что-нибудь там, что я пропустил? Я гугл так много, но до сих пор не нашел ничего, что заставляет меня работает, я начинаю думать, что это я, что это глупо.
5

голосов
3

ответ
404

Просмотры

ValidationError FieldUndefined SPQR GraphQL

Я получаю следующее и не могу показаться, чтобы найти ответ. Ошибка [ValidationError {validationErrorType = FieldUndefined, queryPath = [find_by_id], сообщение = Проверка ошибки типа FieldUndefined: Поле 'find_by_id' в типа 'Запрос' не определен @ 'find_by_id', место = [SourceLocation {строки = 1, колонок = 2 }], описание = «Поле„find_by_id“в тип„Запрос“не определено»}] Мой код. Запрос @GraphQLQuery (имя = "find_by_id") публичное событие findById (@GraphQLArgument (имя = "идентификатор") Long идентификатор) {Схема Gen @EJB частное EventFacade eventFacade; // Нормальная без гражданства фасоли GraphQLSchema guestSchema = новый GraphQLSchemaGenerator () .withOperationsFromSingleton (eventFacade) .withValueMapperFactory (новый JacksonValueMapperFactory ()) .withDefaults () .generate (); GraphQL graphQL = GraphQL.newGraphQL (guestSchema) .build (); Код для выполнения Строка запроса = "{find_by_id (ID: 1) {EventName}}"; ExecutionResult результат = graphQL.execute (запрос); Использование SPQR Lib события POJO является основным с именем_событием как строка и идентификатор от абстрактного (Parent) класса. Класс сущностей находится в другом банке (Entity Jar). Код для выполнения запроса и построения схемы находится в EJB Jar. Любая помощь / индикация, где я пошло не будет оценена. UPDATE Создано GIT вопрос, чтобы помочь решить Git Issue Класс сущностей находится в другом банке (Entity Jar). Код для выполнения запроса и построения схемы находится в EJB Jar. Любая помощь / индикация, где я пошло не будет оценена. UPDATE Создано GIT вопрос, чтобы помочь решить Git Issue Класс сущностей находится в другом банке (Entity Jar). Код для выполнения запроса и построения схемы находится в EJB Jar. Любая помощь / индикация, где я пошло не будет оценена. UPDATE Создано GIT вопрос, чтобы помочь решить Git Issue
Tinus Jackson
5

голосов
3

ответ
1.2k

Просмотры

Вводят боб в DataFetcher из GraphQL

Я использую Spring & graphql-Java (graphql-Java-аннотацию) в моем проекте. Для извлечения части данных, я использую DataFetcher для получения данных от службы (из базы данных). Странно то, что: MYSERVICE всегда нуль. Кто-нибудь знает причину? DataFetcher @Component общественного класс MyDataFetcher реализует DataFetcher {// получить данные из базы данных @Autowired частной MYSERVICE MYSERVICE; @Override прибудет общественный объект (DataFetchingEnvironment среда) {вернуться myService.getData (); }} Схема @Component @GraphQLName ( "Запрос") общественного класса MyGraphSchema {@GraphQLField @GraphQLDataFetcher (MyDataFetcher.class) публичное GetData данных () {возвращение нуль; }} MyService @Service общественного класса MyService {@Autowired частное MyRepository myRepo; @Transactional (доступен только для чтения = истина) публичное GetData данных () {вернуться myRepo.getData (); }} Основной тест @Bean общественного струнного testGraphql () {объект GraphQLObjectType = GraphQLAnnotations.object (MyGraphSchema.class); GraphQLSchema схема = newSchema () запрос (объект) .build (). GraphQL graphql = новый GraphQL (схема); ExecutionResult результат = graphql.execute ( "{{GetData ID Имя по убыванию}}") ;; Карта v = (Карта) result.getData (); System.out.println (v); вернуть v.toString (); } выполнение ( "{{GetData ID Имя по убыванию}}") ;; Карта v = (Карта) result.getData (); System.out.println (v); вернуть v.toString (); } выполнение ( "{{GetData ID Имя по убыванию}}") ;; Карта v = (Карта) result.getData (); System.out.println (v); вернуть v.toString (); }
JasonS
4

голосов
1

ответ
730

Просмотры

Возвратившись ошибка из-GrapQL Java

Я хотел бы, чтобы подтвердить ввод предоставленного пользователем во время мутации, а затем предоставить ошибки, если есть некоторые некорректные поля. Существует вопрос, который отвечает на вопрос для GraphQL-JS здесь я хочу задать этот вопрос о реализации с использованием GraphQL-Java. Скажем, у вас есть какие сообщения данных на сервер API формы. Сервер API, проверяет входные данные и возвращает объект JSON. Если введено недопустимые объекты ошибки, как один ниже возвращаются. {Ошибки: {field1: «требуется»}} Как мы обрабатываем и служат такого рода ошибок при использовании GraphQL? Как и где следует проверка достоверности данных будет осуществляться (если это быть частью GraphQL или она должна быть внутри каждой функции Resolve)?
Maulik Soneji
4

голосов
1

ответ
790

Просмотры

GraphQL Java: Использование @Batched DataFetcher

Я знаю, как получить боб от службы в datafetcher: общественный класс MyDataFetcher реализует DataFetcher {... @Override прибудет общественный объект (DataFetchingEnvironment среда) {вернуться myService.getData (); }} Но схемы с вложенными списками должны использовать BatchedExecutionStrategy и создавать пакетные DataFetchers с Get () методы аннотированные @Batched (см graphql-Java документ). Но где же я положил GetData () вызов тогда? ///// Где поставить этот код? список List = myService.getData (); ///// общественного класса MyDataFetcher реализует DataFetcher {@Batched прибудет общественный объект (DataFetchingEnvironment среды) {возвращение list.get (environment.getIndex ()); // где получить индекс? }}
Matthias M
4

голосов
5

ответ
790

Просмотры

LazyInitializationException с graphql-весна

Я в настоящее время в середине миграции моего REST-сервера на GraphQL (по крайней мере, частично). Большая часть работы сделана, но я наткнулся на эту проблему, которая я, кажется, не в состоянии решить: OneToMany отношений в запросе graphql, с FetchType.LAZY. Я использую: https://github.com/graphql-java/graphql-spring-boot и https://github.com/graphql-java/graphql-java-tools для интеграции. Вот пример: Сущности: @Entity класса Показать {частного Long идентификатор; частное имя строки; @OneToMany частная конкуренция Список; } Класс @Entity конкурс {частное Long ID; частное имя строки; } Схема: тип Показать {идентификатор: ID! Название: String! конкурсы: [Конкурс]} {типа конкуренции: ID! Название: String} простираться тип запроса {показывает: [Показать]} Резольвер: @Component общественного класса ShowResolver реализует GraphQLQueryResolver {@Autowired частное ShowRepository showRepository; Список getShows общественного () {возвращение ((List) showRepository.findAll ()); }} Если я теперь запросить конечную точку с этим (сокращенном) запроса: {{показывает конкурсы имя идентификатор {ID}}} я получаю: org.hibernate.LazyInitializationException: не удалось инициализировать лениво коллекцию ролей: Show.competitions, не мог инициализировать прокси-сервер - нет сеансов Теперь я не знаю, почему эта ошибка происходит, и что это значит, но я не знаю, были применить исправление для этого. Я не хочу, чтобы мои entites жадно извлечь все отношения, потому что свело бы на нет некоторые из преимуществ GraphQL. Любые идеи, где я, возможно, необходимо искать решение? Спасибо!
puelo
4

голосов
1

ответ
907

Просмотры

Как подключить graphiql к другой реализации, кроме JavaScript

я создал graphql конечную точку с помощью реализации graphql-Java, я также установить и запустить graphiql, но я понятия не имею, как подключить graphiql к моей graphql конечной точки. может кто-то пожалуйста, поставить меня через о том, как это сделать.
Peace
3

голосов
1

ответ
148

Просмотры

antlr grammar for triple quoted string

Я пытаюсь обновить грамматику ANTLR, который следует за следующее https://github.com/facebook/graphql/pull/327/files спецификации в логических терминах его определяются как StringValue :: - `«`StringCharacter *`»` - ` "" "` `MultiLineStringCharacter *" "" `StringCharacter :: - ИсходныйСимвол, но не` "` или \ или КонцаСтроки - \ и EscapedUnicode - \ EscapedCharacter MultiLineStringCharacter :: - ИсходныйСимвол, но не `" "" `или` \ ""» `-` \ «» "` (не выше логично - не ANTLR синтаксис) Я попытался следовать в ANTRL 4, но он не узнает больше, чем 1 символ в тройном кавычках строки строки: triplequotedstring | Строковое значение ; triplequotedstring: '" "' triplequotedstringpart? """"; triplequotedstringpart: EscapedTripleQuote * | ИсходныйСимвол *; EscapedTripleQuote: '\\ "" "'; ИсходныйСимвол: [\ u0009 \ u000A \ u000d \ u0020- \ uFFFF]; StringValue: '"' (~ ([ "\\\ п \ г \ u2028 \ u2029]) | EscapedChar ) * '"'; С помощью этих правил будут распознают «" „а“ „“», но как только я добавить больше символов, например, он не:«"„а“„“» привычка анализировать и плагин IntelliJ для ANTLR говорят линия 1:14 постороннее вход «ABC» ожидая { «„“«»,«\\ „“»», ИсходныйСимвол} Как я тройная строки в кавычках в ANTLR с «\„“"»побег? [\ U0009 \ u000A \ u000d \ u0020- \ uFFFF]; StringValue: '"' (~ ([ "\\\ п \ г \ u2028 \ u2029]) | EscapedChar) * «" '; С помощью этих правил будет распознают '" "а" ""', но как только я добавить больше символов, он не например: «„“„ABC“„“» привычка анализировать и плагин IntelliJ для ANTLR говорит линия 1:14 посторонний вход «ABC» ожидая { «„“«»,«\\ „“»», ИсходныйСимвол} Как я тройная строки в кавычках в ANTLR с «\„“"»побег? [\ U0009 \ u000A \ u000d \ u0020- \ uFFFF]; StringValue: '"' (~ ([ "\\\ п \ г \ u2028 \ u2029]) | EscapedChar) * «" '; С помощью этих правил будет распознают '" "а" ""', но как только я добавить больше символов, он не например: «„“„ABC“„“» привычка анализировать и плагин IntelliJ для ANTLR говорит линия 1:14 посторонний вход «ABC» ожидая { «„“«»,«\\ „“»», ИсходныйСимвол} Как я тройная строки в кавычках в ANTLR с «\„“"»побег?
Brad Baker
3

голосов
1

ответ
316

Просмотры

environment.getArgument не может бросить на мой собственный объект Java в graphql-Java

Я не могу бросить входной объект DTO из-за ошибки ниже ExecutionStrategy.resolveField () - исключение при выборке данных java.lang.ClassCastException: java.util.LinkedHashMap несовместима с com.fathome.graphql.OffersDto OffersDto InputObject = environment.getArgument ( "offersInput"); пожалуйста, дайте мне знать, что это не так в коде ниже, спасибо заранее. пакет com.fathome.graphql; импорт graphql.schema *. импорт статического graphql.Scalars *. импортировать статический graphql.schema.GraphQLFieldDefinition.newFieldDefinition; импортировать статический graphql.schema.GraphQLInputObjectField.newInputObjectField; импортировать статический graphql.schema.GraphQLInputObjectType.newInputObject; импортировать статический graphql.schema.GraphQLList.list; импортировать статический graphql.schema.GraphQLObjectType.newObject; общественного класса ManualGraphQLQuerySchema {общественности статической GraphQLObjectType offersResponse = newObject () .name ( "OffersResponse") .field (newFieldDefinition () .name ( "offerName") .type (GraphQLString)) .field (newFieldDefinition () .name ( "offerId" ) .type (GraphQLString)) .build (); общественности статической GraphQLInputObjectType offersRequestType = GraphQLInputObjectType.newInputObject () .name ( "OffersDto") .field (newInputObjectField () .name ( "offerName") .type (GraphQLString)) .field (newInputObjectField () .name ( "offerId"). тип (GraphQLString)). построить (); общественности статической GraphQLObjectType тип_запрос = newObject () .name ( "тип_запрос") .field (newFieldDefinition () .name ( "предложения") .type (offersResponse) .argument (GraphQLArgument.newArgument () .name ( "offersInput") .type (offersRequestType)) .dataFetcher (новый OffersFetcher ())) .build (); } Пакет com.fathome.graphql; импорт com.fasterxml.jackson.annotation.JsonInclude; импорт com.fasterxml.jackson.annotation.JsonProperty; импорт com.fasterxml.jackson.annotation.JsonPropertyOrder; @JsonInclude (JsonInclude.Include.NON_NULL) @JsonPropertyOrder ({ "offerName", "offerId"}) общественного класса OffersDto {@JsonProperty ( "offerName" ) Частная строка offerName; @JsonProperty ( "offerName") публичная Строка getOfferName () {вернуться offerName; } @JsonProperty ( "offerName") общественного недействительными setOfferName (Строка offerName) {this.offerName = offerName; } @JsonProperty ( "offerId") частная строка offerId; @JsonProperty ( "offerId") публичная Строка getOfferId () {вернуться offerId; } @JsonProperty ( "offerId") общественного недействительными setOfferId (Строка offerId) {this.offerId = offerId; }} Пакет com.fathome.graphql; импорт graphql.schema.DataFetcher; импорт graphql.schema.DataFetchingEnvironment; общественный класс OffersFetcher реализует DataFetcher {@Override общественности OffersDto получить (DataFetchingEnvironment среды) {// Может» т литого входного объекта DTO это ошибка в строке ниже //ExecutionStrategy.resolveField () - исключение при выборке данных //java.lang.ClassCastException: java.util.LinkedHashMap несовместима с com.fathome.graphql.OffersDto OffersDto InputObject = средой. getArgument ( "offersInput"); // вызова службы, чтобы получить offerdetails с помощью InputObject службы // для тестирования не вызывая только возвращающегося фиктивного объекта. OffersDto offersDto = новый OffersDto (); offersDto.setOfferName ( "123"); offersDto.setOfferId ( "456"); вернуться offersDto; }} В ниже базовой линии, аналогичной мой код работает нормально. Эпизод эпизод = environment.getArgument ( "эпизод"); ReviewInput обзор = environment.getArgument ( "Обзор"); Http: //graphql-java.readthedocs.
Vinod

Просмотр дополнительных вопросов