Пользовательская сериализация определенного типа возвращаемого значения для DataFetcher
Я использую Spring для GraphQL (версия 2.7.0-M1).
В моей модели предметной области многие свойства возвращают объект
Foo
. Этот объект должен быть сериализован в строку на основе данных, доступных из
GraphQlContext
. Итак, схема выглядит так:
type Parent {
code: String!
foo: String
...
}
Это легко сделать с
@SchemaMapping
для определенного родительского типа .
@SchemaMapping(typeName = "Parent", field = "foo")
public String foo(Parent parent, DataFetchingEnvironment env) {
var context = env.getGraphQlContext();
return ...
Тем не менее, это не очень СУХОЙ. Я ищу способ разместить этот код в одном месте, например, в пользовательском скаляре. Есть ли способ сделать это с помощью spring-graphql/graphql-java?
1 ответ
Бы
@ContextValue
помочь здесь? Это уберет немного шаблонного кода из ваших обработчиков контроллера.
@SchemaMapping(typeName = "Parent", field = "foo")
public String foo(Parent parent, @ContextValue Foo foo) {
Если вы хотите что-то более сложное, я думаю, вам следует уточнить точную связь между атрибутом одного или нескольких типов в вашей схеме и некоторым случайным значением в контексте.
Может быть, вы могли бы привести какой-то конкретный пример здесь?