Spring Boot Web:根据情况返回JSON或XML


#Spring Boot#


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 对象是以单例的形式存在。


( 本文完 )