Вы можете взглянуть на представления Джексона .
Это будет означать определение двух представлений: одно для ответа с 15 полями, а другое для ответа с 6 полями.
public class Views {
// only 6 attributes
public static class Standard { }
// all 15 attributes - note the extends
public static class Full extends Standard { }
}
Затем добавьте аннотацию @JsonView
в атрибуты класса ответа.
public class Response {
// will be visible only in Standard view
@JsonView(Views.Standard.class)
private Object attribute1;
// will be visible in both Standard and Full views
@JsonView(Views.Full.class)
private Object attrbiute2;
}
На уровне API вы можете определить две конечные точки, одну для стандартной схемы и одну для полной схемы.
@JsonView(Views.Stadard.class)
@GetMapping("/standard")
public Response getStandard() {
// ...
}
@JsonView(Views.Full.class)
@GetMapping("/full")
public Response getFull() {
// ...
}
На основе конечной точки, которую вызывает ваш клиент, Джексон соответствующим образом сериализует ответ.
Это привлекательно с точки зрения повторного использования, поскольку оно повлияет только на вашу сущность и веб-слои (и только добавив несколько аннотаций), что позволит вам полностью использовать вашу текущую логику.
учебник