Я построил службу REST json с такими контроллерами, как этот:
@Controller
@RequestMapping(value = "/scripts")
public class ScriptController {
@Autowired
private ScriptService scriptService;
@RequestMapping(method = RequestMethod.GET)
@ResponseBody
public List<Script> get() {
return scriptService.getScripts();
}
}
Он отлично работает, но теперь мне нужно изменить все ответы и добавить все поля "статус" и "сообщение". Я читал о некоторых решениях:
- возвращает из всех методов контроллера объект некоторого определенного класса, например, RestResponse, который будет содержать поля "статус" и "сообщение" (но это не общее решение, потому что мне придется модифицировать все мои контроллеры и писать новые контроллеры в новом стиле)
- перехватить все методы контроллера с помощью аспектов (но в этом случае я не могу изменить тип возврата)
Можете ли вы предложить другое, общее и правильное решение, если я хочу обернуть значения, возвращаемые из методов контроллера, в объекты класса:
public class RestResponse {
private int status;
private String message;
private Object data;
public RestResponse(int status, String message, Object data) {
this.status = status;
this.message = message;
this.data = data;
}
//getters and setters
}