zoukankan      html  css  js  c++  java
  • SpringMvc返回报文形式的控制-验证方法: JSON or HTML or XML

     

    首先,请求通过accept请求头声明了支持的返回格式

    然后,框架根据该请求头和代码实现(注解)选择了对应的MessageConverter处理返回!

    一、验证过程

    1、返回html

    1.1、请求组装

    http://10.110.20.146/cloud-web/version-info

    请求头:Accept=text/html; charset=utf-8

    1.2、请求报文

    GET /cloud-web/version-info HTTP/1.1
    Host: 10.110.20.146
    Accept: text/html; charset=utf-8
    Cache-Control: no-cache
    Postman-Token: 9c41ee47-66df-cdbc-ff6f-1d581837b9c1 

    1.3、执行过程

    2、返回json

    2.1、请求组装

    http://10.110.20.146/cloud-web/version-info

    Accept=application/json; charset=UTF-8

    2.2、请求报文

    GET /cloud-web/version-info HTTP/1.1
    Host: 10.110.20.146
    Accept: application/json; charset=UTF-8
    Cache-Control: no-cache
    Postman-Token: e8507a90-eaa7-c339-c78c-a24e51d9aeb6 

    2.3、执行过程

    3、返回xml

    3.1、请求组装

    http://10.110.20.146/cloud-web/version-info

    请求头:Accept=application/xml; charset=utf-8

    3.2、请求报文

    GET /cloud-web/version-info HTTP/1.1
    Host: 10.110.20.146
    Accept: application/xml
    Cache-Control: no-cache
    Postman-Token: ac2859b4-c38a-2b20-e432-f9f20dc8486f

    3.3、执行过程

    二、后台实现

    1、返回xml

    返回xml要满足两个条件:

     

    请求头中包含了application/xhtml+xml

     

    1.1、开发阶段:JavaBean:@XmlRootElement注解 

    1.2、开发阶段:Controller: @ResponseBody注解和返回Java对象

    1.3、请求阶段:HTTP Request Header中的Accept属性

    2、如果要返回json

    开发阶段:引入json的相关jar包

     

    或者

     

    2.1、开发阶段:JavaBean:无@XmlRootElement注解

    2.2、开发阶段:Controller返回Java对象

    和getEmployeeXml()相比,这里返回对象变成了Employee

    因为Employee类上没有@XmlRootElement注解,所以Spring不会选择Jaxb2RootElementHttpMessageConverter。

    又因为Accept属性中包含了*/*,表示接受任意格式返回数据,所以GsonHttpMessageConverter的canWrite()方法返回true.这样Spring就会选择MappingJackson2HttpMessageConverter或者GsonHttpMessageConverter来进行数据转换。 

    2.3、请求阶段:HTTP Request Header中的Accept属性

    经过以上方式,返回结果就可以自动被转换成对应的XML或者JSON数据

    三、测试用例

  • 相关阅读:
    Unity UGUI
    机器学习:logistic回归与Softmax回归 代码+案例
    机器学习:线性回归 代码+测试
    《算法竞赛进阶指南》0x33同余 扩展欧几里得解线性同余方程组
    《算法竞赛进阶指南》0x33同余 POJ1845 乘方约数和取模
    《算法竞赛进阶指南》0x33同余 POJ3696 The Luckies Number
    《算法竞赛进阶指南》0x32欧拉函数 POJ3090 Visible Lattice Points
    《算法竞赛进阶指南》0x32约数 解公因数以及公倍数方程
    《算法竞赛进阶指南》0x32约数 余数之和
    《算法竞赛进阶指南》0x32约数
  • 原文地址:https://www.cnblogs.com/lexiaofei/p/7274963.html
Copyright © 2011-2022 走看看