Как использовать @JsonView с @RequestBody в интерфейсе @FeignClient - PullRequest
0 голосов
/ 30 сентября 2019

Я бы хотел использовать @JsonView для параметра с методом @PostMapping в прокси @FeignClient.

Но, похоже, это не работает.

Я читал, что он работает с версией Джексона выше 2.5 I, и я использую 2.9.3

Вот класс уведомлений с аннотациями JsonView на геттерах.

У меня есть два вида: Простой и Подробный , которые расширяют Простой . Поэтому здесь поле message не должно быть сериализовано.

@Setter
@ToString
public class Notification {

fields ...

  @JsonView(View.Simple.class)
    public NotificationService getService() {
        return service;
    }

    @JsonView(View.Simple.class)
    public NotificationSeverity getSeverity() {
        return severity;
    }

    @JsonView(View.Detailed.class)
    public String getMessage() {
        return message;
    }

    @JsonView(View.Simple.class)
    public Date getDate() {
        return date;
    }

    @JsonView(View.Simple.class)
    public Long getIdUser() {
        return idUser;
    }

}

Я вызываю службу из RestController

Long idNotification = this.proxyNotification.createNotification(notification);

И FeignClient

@Component
@FeignClient(name = "notification-server", url = "${feign.url.notification}")
public interface ProxyMicroserviceNotification {

    @PostMapping(value = "notification-server/notifications/create")
    Set<Long> createNotifications(@RequestBody  @JsonView(View.Simple.class) Notification [] 
    notifications);

    @PostMapping(value = "notification-server/notification/create")
    Long createNotification(@RequestBody @JsonView(View.Simple.class) Notification notification);

}

В удаленной службе у меня все еще есть поле сообщения, поэтому фильтр не работает должным образом. На самом деле здесь мне не нужно использовать View, и я мог бы отправить все поля класса, но я бы хотел, чтобы он работал на тот случай, если он мне понадобится для другой цели.

...