📜  Spring – REST XML 响应(1)

📅  最后修改于: 2023-12-03 15:20:13.600000             🧑  作者: Mango

Spring – REST XML 响应

在Spring中,我们可以轻松地创建RESTful Web服务,并为这些服务提供XML格式的响应。本文将介绍如何在Spring中创建RESTful Web服务并使用XML格式的响应。

1. 添加Maven依赖

我们需要添加以下Maven依赖项以使用Spring的核心库和REST相关库。

<dependencies>
    <!-- Spring Core -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>5.2.9.RELEASE</version>
    </dependency>
    
    <!-- Spring Web MVC -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>5.2.9.RELEASE</version>
    </dependency>
    
    <!-- Jackson XML -->
    <dependency>
        <groupId>com.fasterxml.jackson.dataformat</groupId>
        <artifactId>jackson-dataformat-xml</artifactId>
        <version>2.11.4</version>
    </dependency>
</dependencies>
2. 创建REST Controller

我们将创建一个简单的REST Controller,该Controller将返回包含学生姓名和年龄的XML响应。Controller需要在方法上使用@RequestMapping注解,并使用@GetMapping注解表示该方法仅响应HTTP GET请求。然后,我们使用@ResponseBody注解将响应对象转换为XML,并使用Jackson库进行序列化和反序列化。

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/api")
public class StudentController {

    @GetMapping("/student")
    public @ResponseBody Student getStudent() {
        Student student = new Student();
        student.setName("John");
        student.setAge(25);
        return student;
    }
}

在上面的代码中,我们创建了一个名为Student的实体类,该类具有名称和年龄属性,我们将在下面的代码片段中添加。

3. 创建实体类

我们创建一个名为Student的实体类,将在下一步中使用该类作为响应对象。我们需要在Student类上使用@XmlRootElement注解,以将此类转换为XML响应。

import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
public class Student {

    private String name;
    private int age;

    // getters/setters

}
4. 添加XML消息转换器

我们需要在配置文件中添加一个消息转换器,以使我们的响应转换为XML格式。我们将使用MappingJackson2XmlHttpMessageConverter将响应对象转换为XML。

import java.util.List;

import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2XmlHttpMessageConverter;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        converters.add(new MappingJackson2XmlHttpMessageConverter());
    }

}

我们现在已经完成了所有配置和实现,我们可以使用以下URL访问我们的REST服务http://localhost:8080/api/student,并可以在浏览器中看到一个包含内容的XML响应。

<?xml version="1.0" encoding="UTF-8"?>
<Student>
    <name>John</name>
    <age>25</age>
</Student>

本文介绍了如何在Spring中创建RESTful Web服务并使用XML格式的响应。我们执行了以下操作:

  • 添加Maven依赖;
  • 创建REST Controller;
  • 创建实体类;
  • 添加XML消息转换器。

接下来,您可以扩展您的应用程序并按照自己的要求创建服务。