Ответ от весенне-загрузочного приложения в формате JSON вместо xml? - PullRequest
0 голосов
/ 19 сентября 2018

Есть приложение весенней загрузки (web + jpa) Итак, у меня есть контроллер:

@RestController
public class CustomerController {
    @Autowired
    private CustomerService customerService;

@RequestMapping(value = "/customers", method = RequestMethod.GET)
public @ResponseBody List<Customer> findAllCustomers() {
    return customerService.findAllCustomers();
}

@RequestMapping(value = "/customers", method = RequestMethod.POST)
public void addCustomer(@RequestBody Customer customer) {
    customerService.addCustomer(customer);
}

Модель:

import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

@Entity
@Table(name="customer")
@XmlRootElement(name="customer")
public class Customer{
    @Id
    private String id;
    private String name;

    public Customer(String id, String name) {
        this.id = id;
        this.name = name;
    }

    public Customer() {
    }

    public String getId() {
        return id;
    }

    @XmlElement
    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    @XmlElement
    public void setName(String name) {
        this.name = name;
    }
}

И сервисный уровень для bind jpa и отдыха.

Когда я делаю запрос:

<customer>
    <id>first</id>
    <name>first name of metric</name>
</customer>

все в порядке, клиент добавляет в базу данных, но, когда я пытаюсь получить всех клиентов, ответ в формате json, но я ожидал xml.Как исправить проблему?

Ответы [ 3 ]

0 голосов
/ 19 сентября 2018

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

@ResponseBody автоматически сериализует возвращаемое значение в соответствии с возможностями внешнего клиента и библиотеками, доступными в пути к классам.Если Джексон доступен на пути к классам, и клиент указал, что он может принять JSON, возвращаемое значение будет автоматически отправлено как JSON.Если JRE составляет 1,7 или выше (что означает, что JAXB включен в JRE) и клиент указал, что он может принимать XML, возвращаемое значение будет автоматически отправлено как XML.

0 голосов
/ 19 сентября 2018

Решено добавлением

    <dependency>
        <groupId>com.fasterxml.jackson.dataformat</groupId>
        <artifactId>jackson-dataformat-xml</artifactId>
    </dependency>
0 голосов
/ 19 сентября 2018

Отметить метод контроллера как выдающий application/xml ответов (produces = MediaType.APPLICATION_XML_VALUE).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...