在 Spring Boot Web:通过 Hello World 入门 中我们看到,如果 @RequestMapping
注解修饰的方法中返回的是对象,那么网页浏览器访问,返回的数据将是JSON。
如果我们要返回 XML 呢?
我们基于 Spring Boot Web:通过 Hello World 入门 中的示例代码稍作更改。
首先,在 build.gradle 中增加依赖:
compile("com.fasterxml.jackson.dataformat:jackson-dataformat-xml")
修改 Greeting 类:
package hello;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class Greeting {
// 去掉来了final修饰
private long id;
private String content;
// 增加了无参构造函数,不加的话解析xml时会报错
public Greeting() {
}
public Greeting(long id, String content) {
this.id = id;
this.content = content;
}
// 增加setter方法
public void setId(long id) {
this.id = id;
}
public void setContent(String content) {
this.content = content;
}
public long getId() {
return id;
}
public String getContent() {
return content;
}
}
GreetingController
内容不变。
测试:
浏览器直接访问 http://localhost:8080/greeting?name=World ,查看网页源码:
<Greeting><id>1</id><content>Hello, World!</content></Greeting>
然后我们用 postman 测试,如果请求头有:
Accept: text/xml
或者
Accept: application/xml
会返回 xml 结果。
如果 http 请求头 Accept 为空,或者:
Accept: application/json
响应结果是:
{"id":6,"content":"Hello, World!"}
注意,id是在递增的。这说明 Controller 对象是以单例的形式存在。