Представление данных Rest Api - PullRequest
0 голосов
/ 25 сентября 2019

У меня есть Api Spring Boot Rest

@RestController
public class BookController {

@Autowired
private BookRepository bookRepo;

@GetMapping(value = "/library/", produces ={MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_XML_VALUE})
public List<Book> index(){
    Iterable<Book> bookIterable = bookRepo.findAll();
    List<Book> bookList = new ArrayList<>();
    bookIterable.forEach(a->bookList.add(a));
    return bookList;
}

Моя домашняя работа - добавить дополнительное представление данных, чтобы при вводе запроса я мог выбирать между представлением данных, которое я не буду XML илиJSON

Проблема в Header Data Representation Options

Я получаю четный JSON, как я могу переключаться между XML и Json, когда я делаю запрос Get к конечной точке

Ответы [ 2 ]

2 голосов
/ 25 сентября 2019

Для решения вашей проблемы вам нужно использовать заголовок Accept. подробнее

Заголовок Content Type указывает тип данных, которые вы передаете в запросе. подробнее

Вам необходимо сделать запрос с заголовком, если вы хотите отправлять и получать xml:

 Accept: application/xml;
 Content-Type: application/xml;

полезная ссылка

0 голосов
/ 25 сентября 2019

Хорошо, теперь я сам нашел то, что вам нужно знать, чтобы использовать вывод XML: сначала добавьте в файл pom.xml следующие зависимости: Jackson XML Dataformat

        <dependency>
          <groupId>com.fasterxml.jackson.dataformat</groupId>
          <artifactId>jackson-dataformat-xml</artifactId>
        </dependency>
        <dependency>
           <groupId>javax.xml.bind</groupId>
           <artifactId>jaxb-api</artifactId>
           <version>2.3.1</version>
        </dependency>

Then i just have to Add Jackson Annotations to my Entity Class



   @Entity
   @JacksonXmlRootElement
   public class Book {
    public Book() {
    }
    @JacksonXmlProperty(isAttribute = true)
    @Id
    @GeneratedValue
    private Integer id;
    @JacksonXmlProperty(isAttribute = true)
    private String title;
    @JacksonXmlProperty(isAttribute = true)
    private Integer numberOfCopies;

Вот тогда яМожно сделать запрос с помощью значения Accept Header application / xml

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