Пользовательская сериализация определенного типа возвращаемого значения для 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) {

Если вы хотите что-то более сложное, я думаю, вам следует уточнить точную связь между атрибутом одного или нескольких типов в вашей схеме и некоторым случайным значением в контексте.

Может быть, вы могли бы привести какой-то конкретный пример здесь?

Другие вопросы по тегам