Size: a a a

GraphQL — русскоговорящее сообщество

2019 November 28

RA

Ruslan Abdullaev in GraphQL — русскоговорящее сообщество
Т.е. не очередной обзорный доклад - GraphQL, bla-bla-bla, язык запросов, а именно практические советы
источник
2019 November 29

DT

Dmitry Tsepelev in GraphQL — русскоговорящее сообщество
Ruslan Abdullaev
Что-то не могу вспомнить и в истории не попадается видео русскоязычного доклада, с примерами решений  наиболее типовых подводных камней GraphQL
Подводные камни какого рода? К примеру, связанные с проектированием схемы/безопасностью/применением (и неприменимостью) самой технологии?
источник

VN

Vladislav Nikonorov in GraphQL — русскоговорящее сообщество
Ruslan Abdullaev
Что-то не могу вспомнить и в истории не попадается видео русскоязычного доклада, с примерами решений  наиболее типовых подводных камней GraphQL
Дайте такое на английском
источник

RA

Ruslan Abdullaev in GraphQL — русскоговорящее сообщество
Dmitry Tsepelev
Подводные камни какого рода? К примеру, связанные с проектированием схемы/безопасностью/применением (и неприменимостью) самой технологии?
Ну вот есть такой доклад "Владимир Заец. GraphQL - удобное API или хайп? JS Fest 2018", там есть и про решение некоторых проблем и про безопасность, но это не тот доклад )
источник

DT

Dmitry Tsepelev in GraphQL — русскоговорящее сообщество
Я в этом году делал три доклада, могу сформулировать все известные мне подводные камни, проверим то или не то 🙂

1. N + 1 сложнее обнаружить и обработать потому, что нам (в отличие от REST) нужно понять динамически, какие данные загружать из БД
2. Кэширование в целом и HTTP кэш в частности делать сложно и руками
3. Нет рекурсивных запросов и оператора "выбрать все" (`query { user { * } }`)
4. В некоторых случаях подход "атомарных мутаций" превращается в "четыре мутации одно и то же поле одинаково обновляют"
5. Появляются новая уязвимость "сложный/глубокий запрос"
6. Есть шанс спроектировать схему "как REST", и потом понять, что старые проблемы не решились, а новые прибавились 🙂
источник

RA

Ruslan Abdullaev in GraphQL — русскоговорящее сообщество
Dmitry Tsepelev
Я в этом году делал три доклада, могу сформулировать все известные мне подводные камни, проверим то или не то 🙂

1. N + 1 сложнее обнаружить и обработать потому, что нам (в отличие от REST) нужно понять динамически, какие данные загружать из БД
2. Кэширование в целом и HTTP кэш в частности делать сложно и руками
3. Нет рекурсивных запросов и оператора "выбрать все" (`query { user { * } }`)
4. В некоторых случаях подход "атомарных мутаций" превращается в "четыре мутации одно и то же поле одинаково обновляют"
5. Появляются новая уязвимость "сложный/глубокий запрос"
6. Есть шанс спроектировать схему "как REST", и потом понять, что старые проблемы не решились, а новые прибавились 🙂
А видео докладов есть? )
В целом - да, большая часть из этих вопросов была в докладе
источник

DT

Dmitry Tsepelev in GraphQL — русскоговорящее сообщество
источник

RA

Ruslan Abdullaev in GraphQL — русскоговорящее сообщество
а предыдущий на Dump?
источник

DT

Dmitry Tsepelev in GraphQL — русскоговорящее сообщество
так точно
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
“Не надо превращать GraphQL в обертку над базой данных” – ответ на вопрос про то, что стоит ли сразу генерить из моделей или инстроспекции базы свое АПИ.

Отличный ответ 👍
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
Хороший доклад, и самое главное какие вопросы народ задавал. Это в каком городе было?
источник

DT

Dmitry Tsepelev in GraphQL — русскоговорящее сообщество
Спасибо 🙂Иннополис, IT Nights
источник

MD

Max Davidov in GraphQL — русскоговорящее сообщество
Without Hands
Ребята, есть у кого патерн для react-apollo клиента с вынесением логики отправки запросов из функциональных компонентов?
const MyComp = () => {
 const {data,loading,error} = useQuery()
 /* обработка loading и error...*/
 return <MyCompFunctional myData={data.query}
}

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

W

Without Hands in GraphQL — русскоговорящее сообщество
Max Davidov
const MyComp = () => {
 const {data,loading,error} = useQuery()
 /* обработка loading и error...*/
 return <MyCompFunctional myData={data.query}
}

Только не очень понятно чем это сильно лучше чем непосредственно в компоненте. С хуками нет большого смысла дробить на контейнеры/презентационные, если только один и тот же презентационный не используется в нескольких местах.
Да на самом деле, хотелось вынести логику к примеру валидации мэйла и пароля отдельно
источник

W

Without Hands in GraphQL — русскоговорящее сообщество
Т.е. провалидовало и отправило запрос на сервер
источник

MD

Max Davidov in GraphQL — русскоговорящее сообщество
т.е. речь про мутации и формы с клиентской валидацией?
источник

W

Without Hands in GraphQL — русскоговорящее сообщество
Max Davidov
т.е. речь про мутации и формы с клиентской валидацией?
Да, оно будет валидировать и на клиенте и на сервере
источник

BS

Bogdan Shelomanov in GraphQL — русскоговорящее сообщество
Max Davidov
const MyComp = () => {
 const {data,loading,error} = useQuery()
 /* обработка loading и error...*/
 return <MyCompFunctional myData={data.query}
}

Только не очень понятно чем это сильно лучше чем непосредственно в компоненте. С хуками нет большого смысла дробить на контейнеры/презентационные, если только один и тот же презентационный не используется в нескольких местах.
не, если тебе такой же запрос сделать нужно? делаешь хук свой, кроторый в папку hooks в текущем скоупе использования, gql файлы таким же образом, если не подходит, можно сделать общую папку с хуками, где разнести их по схемам бека, тогда можно быстро перенести из проекта в проект
источник

W

Without Hands in GraphQL — русскоговорящее сообщество
Max Davidov
т.е. речь про мутации и формы с клиентской валидацией?
Была идея сразу в вынесенной функции работать с кэшем
источник

BS

Bogdan Shelomanov in GraphQL — русскоговорящее сообщество
Without Hands
Т.е. провалидовало и отправило запрос на сервер
валидация не задача аполо, задача форм менеджера
источник