Files
obsidian/Работа/Обновление версий gateway.md

25 lines
2.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
```
ARD-1762: Миграция graphql-go-tools v1 → v2
1. Nil pointer panic при WebSocket upgrade
- ws.HTTPUpgrader передавался как nil в NewGraphqlHTTPHandler
- Исправление: инициализация дефолтного &ws.HTTPUpgrader с Protocol: func(proto string) bool { return proto == "graphql-ws" }
2. Playground не работал
- v2 playground использует @graphiql/plugin-explorer который блокируется CORS при загрузке с CDN
- Исправление: написали кастомный initPlayground в application.go с GraphiQL v2 без проблемного плагина, убрали зависимость от v2/pkg/playground
3. WebSocket ws:// блокировался на HTTPS
- Playground формировал subscription endpoint с ws:// вместо wss:// на задеплоенном окружении
- Исправление: динамическое определение протокола по window.location.protocol
4. Пустой GraphQL запрос query {}
- PingApiGateway в tools/http/handler слал невалидный запрос без полей
- Исправление: заменили на query { __typename }
5. Заголовки авторизации не пробрасывались к subgraph'ам
- В v2 FederationEngineConfigFactory не передаёт клиентские заголовки к subgraph'ам (код закомментирован в библиотеке)
- WithAdditionalHttpHeaders кладёт заголовки в resolve.Context, но до http.Request subgraph'а они не доходили
- Исправление: кастомный headerForwardingTransport который перехватывает все запросы к subgraph'ам и добавляет Authorization / X-Service-Authorization из клиентского запроса, переданного через
context.WithValue
```