У меня есть базовый вызов REST
/**
* REST CALL
* @return
*/
@RequestMapping(method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public List<Template> getTemplatesJson(){
logger.info("GET all computers- /computers/ -- content type = application/json");
return computerService.retrieveAllComputers();
}
Когда я перехожу к URL-адресу, я вижу JSON в браузере. Мы также хотели бы, чтобы наши пользователи могли загружать JSON в качестве файла (который впоследствии используется для импорта).
Есть ли простой способ сделать это с этой конечной точкой или мне нужно создать совершенно новую конечную точку?
Вы можете использовать заголовок Content-Disposition
чтобы указать браузеру, что контент должен быть загружен как вложение, а не отображаться.
Вот как выглядит ваш код:
@RequestMapping(method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public List<Template> getTemplatesJson(HttpServletResponse response) {
logger.info("GET all computers- /computers/ -- content type = application/json");
response.setHeader("Content-Disposition", "attachment; filename=templates.json");
return computerService.retrieveAllComputers();
}