Гость
Форумы / Java [игнор отключен] [закрыт для гостей] / Субботний GraphQL / 17 сообщений из 17, страница 1 из 1
08.06.2019, 20:56
    #39824497
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Субботний GraphQL
Привет всем.

Я здесь буду тихонько флудить на тему 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
09.06.2019, 00:32
    #39824524
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Субботний GraphQL
А вот доки тут более конкретные https://www.graphql-java.com/documentation/v12/
...
Рейтинг: 0 / 0
09.06.2019, 02:48
    #39824532
Sergunka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Субботний GraphQL
mayton,

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

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

https://github.com/prisma/graphql-playground
...
Рейтинг: 0 / 0
09.06.2019, 09:38
    #39824548
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Субботний GraphQL
Нет с работой все в порядке.
И GraphQL не ключевая технология.
...
Рейтинг: 0 / 0
09.06.2019, 10:33
    #39824554
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Субботний GraphQL
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
09.06.2019, 20:33
    #39824652
Sergunka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Субботний GraphQL
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
09.06.2019, 21:15
    #39824661
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Субботний GraphQL
Не можем. Бизнес-аналитика тесно завязана на Java-технологии.
...
Рейтинг: 0 / 0
09.06.2019, 21:41
    #39824665
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Субботний GraphQL
По интроспекции вопрос.

Решил пока на кошках потренироваться. Есть сервис 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
09.06.2019, 23:22
    #39824690
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Субботний GraphQL
Ага. Значит таблички с маленькой буквы.
Код: 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
09.06.2019, 23:28
    #39824693
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Субботний GraphQL
С позволения господ Бэнкса и Порселло - я копипащу фрагмент книги GraphQL.

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

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

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

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

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

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

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

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

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

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

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

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

Код: 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
24.06.2019, 12:14
    #39829772
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Субботний GraphQL
видио непустой список
...
Рейтинг: 0 / 0
24.06.2019, 13:55
    #39829847
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Субботний GraphQL
Список минимум из 1 элемента?
...
Рейтинг: 0 / 0
24.06.2019, 14:40
    #39829883
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Субботний GraphQL
я GraphQL не знаю, но в скале такой тип очень распространен, называется NEL(NonEmptyList). Часто применяется при валидациях различных, когда у тебя два исхода - либо корректный результат либо непустой список с ошибками. Тогда тебе не надо проверять что список не пустой, чтобы отобразить первое сообщение об ошибке.
...
Рейтинг: 0 / 0
24.06.2019, 14:56
    #39829893
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Субботний GraphQL
Создатели этого фреймворка - фанаты Node.

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


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