powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Java [игнор отключен] [закрыт для гостей] / Субботний GraphQL
17 сообщений из 17, страница 1 из 1
Субботний GraphQL
    #39824497
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем.

Я здесь буду тихонько флудить на тему GraphQL.

Линки по теме.
https://graphql.org/
https://github.com/graphql-java/graphql-java


Вопрос.1 Решил запилить учебную схему Scott https://livesql.oracle.com/apex/livesql/file/content_O5AEB2HE08PYEPTGCFLZU9YCV.html в виде GrapQL API

Вот что вышло. Можете комментировать.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
scalar DateTime

type Dept {
    deptno:    ID!,
    dname:     String,
    loc:       String,
    employees: [Emp!]!
}

type Emp {
    empno:    ID!,
    ename:    String,
    job:      String,
    mgr:      Int,
    hiredate: DateTime,
    sal:      Int,
    comm:     String
}


Тут вместо реляции получается агрегация. Возможно это ОК? Или нет?

Вопрос.2 Как дорого стоит поддержка полноценного enpoint при условии что источних постоянно видоизменяется
и дорабатывается. По сути мой вопрос касается сложности реализации query/mutate.

Какие способы простого связывания данных существуют "из коробки" ? Базируюсь на предположении что наша
система смотрит в классическую реляционную БД. Как в примерах со схемой scott. Хотелось бы просто указать
в RuntimeWiring что есть две таблицы и всё.

Вопрос.3 StarWars API. Есть ли где-то поднятый рабочий ендпоинт. Раньше был тут https://graphql.org/swapi-graphql/ (по документации)
но сейчас не доступен.
...
Рейтинг: 0 / 0
Субботний GraphQL
    #39824524
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот доки тут более конкретные https://www.graphql-java.com/documentation/v12/
...
Рейтинг: 0 / 0
Субботний GraphQL
    #39824532
Sergunka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Коллега новую работу ищите? У меня хорошего знакомого в Теслу взяли только благодаря, что он GraphQL знал. На самом деле работ с ним не так уж много.
...
Рейтинг: 0 / 0
Субботний GraphQL
    #39824533
Sergunka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
https://www.graphql-java.com/tutorials/getting-started-with-spring-boot/#try-out-the-api

Вот вроде как туториал, который показывает как работать с плейграунд

https://github.com/prisma/graphql-playground
...
Рейтинг: 0 / 0
Субботний GraphQL
    #39824548
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет с работой все в порядке.
И GraphQL не ключевая технология.
...
Рейтинг: 0 / 0
Субботний GraphQL
    #39824554
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergunka https://www.graphql-java.com/tutorials/getting-started-with-spring-boot/#try-out-the-api

Вот вроде как туториал, который показывает как работать с плейграунд

https://github.com/prisma/graphql-playground
Мы архитектурно отказались от Spring-Boot в новом проекте. Пока backend - это Jetty-like application.
...
Рейтинг: 0 / 0
Субботний GraphQL
    #39824652
Sergunka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonSergunka https://www.graphql-java.com/tutorials/getting-started-with-spring-boot/#try-out-the-api

Вот вроде как туториал, который показывает как работать с плейграунд

https://github.com/prisma/graphql-playground
Мы архитектурно отказались от Spring-Boot в новом проекте. Пока backend - это Jetty-like application.

Вам надо в сторону Го двигаться тогда.
...
Рейтинг: 0 / 0
Субботний GraphQL
    #39824661
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не можем. Бизнес-аналитика тесно завязана на Java-технологии.
...
Рейтинг: 0 / 0
Субботний GraphQL
    #39824665
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По интроспекции вопрос.

Решил пока на кошках потренироваться. Есть сервис https://metaphysics-production.artsy.net/

Помню что первый запрос схемы выглядит так:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
{
  __schema {
    types {
      name
      description
    } 
  }
}



Среди типов нахожу ExternalPartner

Код: java
1.
2.
3.
4.
 {
          "name": "ExternalPartner",
          "description": null
        },



Далее - поскольку это кастомный тип. Хочу посмотреть какие у него есть поля.

Как?

Пробую
Код: java
1.
2.
3.
4.
5.
6.
7.
{
  external_partner {
    id
    city
    name
  }
}



Код: java
1.
2.
3.
4.
5.
6.
7.
{
  ExternalPartner {
    id
    city
    name
  }
}


Они выдают разные ошибки. Мне и лень цитировать. Все говорят о том что я не то делаю. Прошу прощения что
пока не могу их всех адекватно расшировать. Мало знаний по graphql.

Каким образом я мог знать спецификацию полей не подглядывая в DocumentationExplorer (справа)?
Насколько я понимаю эта мета тоже должна была извлечена из __schema или других спец-вьюх?

Каких?

Грубо говоря мне надо представить что я не человек а бот который собирает просто сведенья по доменной модели.
...
Рейтинг: 0 / 0
Субботний GraphQL
    #39824690
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ага. Значит таблички с маленькой буквы.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
query {
  orders {
    id
    createdAt
    state
    total
    customer    
    items {
      quantity
      price      
    }
  }
}


Но в моём кейсе с схемой EMP/DEBT в агрегации будет стоять DEBT.
...
Рейтинг: 0 / 0
Субботний GraphQL
    #39824693
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С позволения господ Бэнкса и Порселло - я копипащу фрагмент книги GraphQL.

Принципы проектирования GraphQL

Несмотря на то что GraphQL не контролирует, как вы создаете свой
API, спецификация предлагает некоторые рекомендации 1 .

Иерархичность. GraphQL-запрос является иерархическим. Поля
встраиваются в другие поля, и запрос формируется подобно дан-
ным, которые он возвращает.

Ориентированность на продукт. GraphQL управляется потреб-
ностями данных клиента, а также языком и временем выполнения,
поддерживаемыми клиентом.

Строгая типизация. Сервер GraphQL поддерживается системой
GraphQL. В схеме каждая точка данных имеет определенный тип,
насчет которого она будет проверена.

Запросы, определенные клиентом. Сервер GraphQL предоставляет
возможности, которые клиенты могут использовать.

Интроспектива. Язык GraphQL может запрашивать серверную
систему типов GraphQL

По запросам - непонятно. Возможно перевод хреновый.

Что за точка данных? Непонятно. Надо искать по книге.

А.... то что я называл интроспекция... они тут назвали интроспектива. Ну ладно.

Иерархичность. Хм.. честно я ожидал графовость. Ну ладно. Возможно это также можно трактовать.
...
Рейтинг: 0 / 0
Субботний GraphQL
    #39824695
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А.. точка - это endpoint.
...
Рейтинг: 0 / 0
Субботний GraphQL
    #39829762
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Продолжим. По запросам.

Допустим мне интересно смотреть список сотрудников. И выборочно одного сотрудника.

Код: javascript
1.
2.
3.
4.
5.
6.
7.
type Query {

    employee(empno: ID!): Emp

    employees: [Emp]!

}



Здесь сразу возникает некая избыточность. Зачем мне 2 метода? Хочется как-то обобщить? Но как.

И констрейнты.

Вот эти варианты - понятны.

Здесь - not null
Код: java
1.
Emp!



Здесь - всегда список.
Код: java
1.
[Emp]!



А это что за Хрень?
Код: java
1.
[Emp!]!
...
Рейтинг: 0 / 0
Субботний GraphQL
    #39829772
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
видио непустой список
...
Рейтинг: 0 / 0
Субботний GraphQL
    #39829847
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Список минимум из 1 элемента?
...
Рейтинг: 0 / 0
Субботний GraphQL
    #39829883
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я GraphQL не знаю, но в скале такой тип очень распространен, называется NEL(NonEmptyList). Часто применяется при валидациях различных, когда у тебя два исхода - либо корректный результат либо непустой список с ошибками. Тогда тебе не надо проверять что список не пустой, чтобы отобразить первое сообщение об ошибке.
...
Рейтинг: 0 / 0
Субботний GraphQL
    #39829893
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Создатели этого фреймворка - фанаты Node.

Вторая половина книги Бэнкса и Порселло - полностью посвящена примерам на Node.JS (Apollo Server)
что для меня создает некоторые неудобства. Ну да ладно. Потрачу несколько дней.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Субботний GraphQL
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]