Возвращаемые данные - Java

У меня есть интерфейс, который дает мне запрос и тип.

Типы - JSON и XML. Как я могу создать и отправить файл загрузки в сообщение ajax?

@RestController
public class RestCtrl {

@Autowired
JdbcTemplate jdbcTemplate;

@GetMapping("/getData")
List<Map<String, Object>> getData(@RequestParam String type, @RequestParam String query) {
    System.out.println(type + " " + query);
    List<Map<String, Object>> data = jdbcTemplate.queryForList(query);
    if (type.equals("JSON")) {

    }
    else if (type.equals("XML")){

    }
}
}

В основном XML будет иметь имена столбцов в <>, например <TITLE>This is a title</TITLE> I, это SOAP, верно?

Примерно так: https://flowgear-wpengine.netdna-ssl.com/wp-content/uploads/2016/12/XML-vs-JSON1.png

Обновлено: ничего подобного

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
163
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вам не нужно беспокоиться о возвращаемом типе носителя, spring сделает это за вас, вам нужно добавить `` производит '' в конечную точку отдыха.

@RequestMapping(value = "getData", method = RequestMethod.GET , produces = {MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_XML_VALUE})
List<Map<String, Object>> getData(@RequestParam String type, @RequestParam String query) {

вам может потребоваться добавить формат данных Джексона для неявного отображения POJO в XML

<dependency>
    <groupId>com.fasterxml.jackson.dataformat</groupId>
    <artifactId>jackson-dataformat-xml</artifactId>
</dependency>

Это может помочь, но это неполно. Мне нужно выполнить запрос, и файл должен быть загружен из внешнего интерфейса

user10038298 06.07.2018 17:01
Ответ принят как подходящий

Из веб-документации Spring:

https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html#mvc-ann-requestmapping-produces

You can narrow the request mapping based on the Accept request header and the list of content types that a controller method produces.

https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html#mvc-ann-requestmapping-consumes

You can narrow the request mapping based on the Content-Type of the request.

Запрос

Клиентское приложение может управлять форматом mime данных запроса POST (XML, JSON) с помощью HTTP-заголовка Content-Type. Например:

  1. Content-Type: application/json определит, что данные запроса предоставляются в формате JSON.
  2. Content-Type: text/xml определит, что данные запроса предоставляются в формате XML.

Серверное приложение может контролировать, какой формат MIME оно может обрабатывать, используя атрибут consumes аннотации @PostMapping:

@PostMapping(path = "/pets", consumes = "application/json")
public void addPet(@RequestBody Pet pet) {
    // ...
}

Если значение заголовка Content-Type не соответствует значению атрибута потребителя, Spring создаст исключение, что он может обрабатывать входные данные.

Ответ

Клиентское приложение может управлять форматом mime данных ответа (XML, JSON) с помощью HTTP-заголовка Accept. Например:

  1. Accept: application/json определит, что клиент может принимать данные, предоставленные в формате JSON.
  2. Accept: text/xml определит, что клиент может принимать данные в формате XML.

Серверное приложение может контролировать, какой формат MIME оно может обрабатывать, используя атрибут produces в @RequestMapping, @GetMapping и других аннотациях:

@GetMapping(path = "/pets/{petId}", produces = "application/json;charset=UTF-8")
@ResponseBody
public Pet getPet(@PathVariable String petId) {
    // ...
}

Если значение заголовка «Принять» не соответствует значению атрибута «производит», Spring сгенерирует исключение, что может обрабатывать входные данные.

Spring определил полезные константы для широко используемых mime-типов:

MediaType.APPLICATION_XML_VALUE
MediaType.APPLICATION_JSON_VALUE

Полный список значений см. В документации: https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/http/MediaType.html

consumes и produces - многозначные атрибуты. В виде списка можно указать несколько значений:

@GetMapping(path = "/pets/{petId}", produces = {MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_XML_VALUE})

Другие вопросы по теме