Как автоматически генерировать поля ответа, которые не имеют 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 из строки (будет динамическим во время выполнения). Таким образом, я вижу только два варианта:
- Подход, который вы уже описали: создание соответствующего POJO и его использование.
- Использование Spring REST Docs для соответствующего теста и ручное документирование каждого поля в тесте. Возможно, это лучший вариант, если вы не хотите изменять производственный код.