Как автоматически генерировать поля ответа, которые не имеют POJO

У нас есть сервис, который просто возвращает документ json по запросу GET. Поскольку у нас нет POJO для ответа "модель", похоже, мы не сможем использовать генерацию полей автоответа "доброта".

Один из вариантов для нас - создать Pojos (довольно большой, около 50 атрибутов) и соответствующий контроллер, который использует pojos. Это неудобно, так как теперь мы должны поддерживать модель и соответствующий контроллер, чтобы мы могли автоматически генерировать модель.

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

Вот контроллер, на который я ссылаюсь:

@RestController
@RequestMapping("/api")
public class ProductController {

   @Autowired
   ProductService productService;

   @RequestMapping(value = { "/products/{ids}" }, method = { RequestMethod.GET },
         produces = "application/json", headers={"accept=application/json"})
   @Timed
   @ExceptionMetered
   @LogExecutionTime
   public String getProductDetails(@PathVariable("id") String id)  {
      return productService.getProductDetails(id);
   }

1 ответ

На данный момент я не вижу возможности использовать автоматическое поколение без дополнительных усилий. Spring Auto REST Docs работает путем проверки POJO с посетителем Джексона (статический самоанализ без информации о времени выполнения), и в настоящее время нет способа извлечь поля JSON из строки (будет динамическим во время выполнения). Таким образом, я вижу только два варианта:

  1. Подход, который вы уже описали: создание соответствующего POJO и его использование.
  2. Использование Spring REST Docs для соответствующего теста и ручное документирование каждого поля в тесте. Возможно, это лучший вариант, если вы не хотите изменять производственный код.
Другие вопросы по тегам