Java for Beginner
770 subscribers
747 photos
212 videos
12 files
1.25K links
Канал от новичков для новичков!
Изучайте Java вместе с нами!
Здесь мы обмениваемся опытом и постоянно изучаем что-то новое!

Наш YouTube канал - https://www.youtube.com/@Java_Beginner-Dev

Наш канал на RUTube - https://rutube.ru/channel/37896292/
Download Telegram
Что выведет код?

import java.util.LinkedHashMap;
import java.util.Map;

public class Task181125 {
public static void main(String[] args) {
Map<String, Integer> map = new LinkedHashMap<>(16, 0.75f, true);
map.put("a", 1);
map.put("b", 2);
map.put("c", 3);

map.get("a");
map.get("b");
map.put("d", 4);
map.get("c");

System.out.println(map.keySet());
}
}


#Tasks
👍2
Варианты ответа:
Anonymous Quiz
64%
[a, b, c, d]
14%
[c, a, b, d]
7%
[d, a, b, c]
14%
[a, b, d, c]
👍1
Вопрос с собеседований

Зачем нужен паттерн Decorator? 🤓


Ответ:

Decorator
позволяет расширять функциональность объекта без изменения его исходного класса, оборачивая его в новые слои поведения.

Это даёт гибкость, избегает наследования, упрощает комбинацию функций и помогает соблюдать принципы SOLID, особенно Open/Closed.



#собеседование
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
История IT-технологий сегодня — 19 ноября


ℹ️ Кто родился в этот день

Не нашел((


🌐 Знаковые события

1969 — американский космический корабль «Аполлон-12», пилотируемый астронавтами Чарльзом Конрадом, Аланом Бином и Ричардом Гордоном, осуществил посадку на Луну.


#Biography #Birth_Date #Events #19Ноября
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Если Вы работаете в IT, как давно вы устроились в текущую компанию?
Anonymous Poll
14%
Более 3х лет назад
43%
От 1 до 3 года
29%
Менее года назад
14%
Менее полугода
🗿2😱1
Запросы и мутации в GraphQL

GraphQL опирается на две основные операции:
Query — безопасные операции чтения данных.
Mutation — операции изменения состояния (создание, обновление, удаление).


Обе операции используют один и тот же язык запросов, отличаются только семантикой:
Query не влияет на состояние системы, Mutation — влияет.


1. Как выглядит запрос (Query)

GraphQL-запрос — декларативное описание структуры данных, которую клиент хочет получить.

Простой пример:
query {
user(id: 42) {
name
avatar
}
}


Здесь:
query — тип операции (можно опустить: GraphQL сам определит, что это запрос).
user(id: 42) — вызов поля корневого типа Query.
{ name, avatar } — конкретные поля, которые клиент хочет получить.

GraphQL не вернёт дополнительные поля и не допустит отсутствующих — запрос полностью определяет форму ответа.


Ответ будет ровно такой:
{
"data": {
"user": {
"name": "Den",
"avatar": "https://example.com/den.png"
}
}
}

Никаких “лишних” полей.



2. Как работает передача аргументов

Аргументы передаются в круглых скобках и могут быть любого типа, определённого в схеме:
скаляры, enum, input-объекты.

Пример схемы:
type Query {
posts(limit: Int, authorId: ID): [Post!]!
}


Пример запроса:
query {
posts(limit: 5, authorId: 42) {
id
title
}
}


Ответ будет:
{
"data": {
"posts": [
{ "id": "101", "title": "GraphQL SDL" },
{ "id": "102", "title": "gRPC vs GraphQL" }
]
}
}


2.1. Переменные запроса (не хардкодим аргументы)

GraphQL поддерживает variables, что особенно важно для фронтенда.

Запрос:

query GetUser($id: ID!) {
user(id: $id) {
name
avatar
}
}


Передаваемые переменные:
{
"id": 42
}


Сервер объединяет запрос с переменными и выполняет его.

Преимущества переменных:
запрос можно кэшировать,
тело операции не меняется,
безопаснее, чем вставлять значения в строку.



3. Что делает Mutation

Mutation изменяет данные.

Пример схемы:
type Mutation {
createPost(input: CreatePostInput!): Post!
}


Пример запроса:
mutation {
createPost(input: { title: "GraphQL", content: "SDL explained" }) {
id
title
}
}


Mutation возвращает объект результата, содержащий новое состояние или подтверждение.

Ответ:
{
"data": {
"createPost": {
"id": "501",
"title": "GraphQL"
}
}
}


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



4. Возврат данных в нужной форме

GraphQL всегда возвращает данные:
в структуре, которую запросил клиент
в иерархии, описанной в запросе
строго тех типов, которые указаны в схеме


Пример: вложенная выборка.
query {
user(id: 1) {
name
posts(limit: 2) {
title
comments {
text
}
}
}
}


Ответ:
{
"data": {
"user": {
"name": "Den",
"posts": [
{
"title": "GraphQL Basics",
"comments": [
{ "text": "Отличная статья" }
]
},
{
"title": "SDL Tutorial",
"comments": []
}
]
}
}
}

Сервер не может изменить структуру ответа — она определяется клиентом.



#Java #middle #GraphQL #Query #Mutation
5. Ошибки и partial responses

GraphQL всегда возвращает JSON-объект с двумя ключами:

data

errors


Что важно:
GraphQL может вернуть часть данных, даже если произошла ошибка.

пример: запрос
query {
user(id: 1) {
name
posts {
title
likes
}
}
}


допустим, поле posts упало из-за ошибки в БД.

Ответ:
{
"data": {
"user": {
"name": "Den",
"posts": null
}
},
"errors": [
{
"message": "Database timeout",
"path": ["user", "posts"]
}
]
}


GraphQL:

не останавливает выполнение всего запроса,
возвращает то, что смог,
указывает путь к проблемному полю.
Это концепция partial response, которой нет ни в REST, ни в gRPC.



6. Как Mutation обрабатывает ошибки

Mutation также может вернуть частичный результат, но чаще ошибка означает, что произошло отклонение операции:

{
"data": {
"createPost": null
},
"errors": [
{
"message": "User not authorized",
"path": ["createPost"]
}
]
}


GraphQL намеренно не использует коды HTTP-статуса, кроме:
200 — запрос обработан
400 — синтаксическая ошибка запроса
500 — ошибка самого сервера GraphQL (не бизнес-ошибка)



#Java #middle #GraphQL #Query #Mutation