spring REST中的内容协商(同一资源,多种展现:xml,json,html)
为什么80%的码农都做不了架构师?>>>
一.REST内容协商介绍
RESTful服务中很重要的一个特性即是同一资源,多种表述.也即如下面描述的三种方式:
GET /user/123 HTTP/1.1
Accept: application/xml //将返回xml格式数据 GET /user/123 HTTP/1.1
Accept: application/json //将返回json格式数据
/user/123.xml 将返回xml格式数据
/user/123.json 将返回json格式数据
/user/123.html 将返回html格式数据
3.使用参数
/user/123?format=xml //将返回xml数据
/user/123?format=json //将返回json数据
- chrome:
- Accept:application/xml,application/xhtml+xml,textml;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
- firefox:
- Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
- IE8:
- Accept:image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, application/x-silverlight, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, */*
二.spring配置
下面是ContentNegotiatingViewResolver的完全配置.
<beanclass="org.springframework.web.servlet.view.ContentNegotiatingViewResolver"><!-- 设置为true以忽略对Accept Header的支持 --><property name="ignoreAcceptHeader" value="true" /><!-- 在没有扩展名时即: "/user/1" 时的默认展现形式 --><property name="defaultContentType" value="text/html" /><!-- 扩展名至mimeType的映射,即 /user.json => application/json --><property name="mediaTypes"><map><entry key="json" value="application/json" /><entry key="xml" value="application/xml" /></map></property><!-- 用于开启 /userinfo/123?format=json 的支持 --><property name="favorParameter" value="false" /><property name="viewResolvers"><list><bean class="org.springframework.web.servlet.view.BeanNameViewResolver" /><beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="viewClass"value="org.springframework.web.servlet.view.JstlView" /><property name="prefix" value="/pages" /><property name="suffix" value=".jsp"></property></bean></list></property><property name="defaultViews"><list><!-- for application/json --><beanclass="org.springframework.web.servlet.view.json.MappingJacksonJsonView" /><!-- for application/xml --><!-- <bean class="org.springframework.web.servlet.view.xml.MarshallingView" > <property name="marshaller"> <bean class="org.springframework.oxm.xstream.XStreamMarshaller"/> </property> </bean> --></list></property></bean>
转载于:https://my.oschina.net/psuyun/blog/161047
spring REST中的内容协商(同一资源,多种展现:xml,json,html)相关推荐
- Spring框架中的内容协商
1.简介 使用BeanNameViewResolver完成的工作就是,我们刚刚在Spring上下文中创建了多个bean视图以生成预期的输出. Spring很快引入了内容协商策略 ,该策略可以使用传统的 ...
- Spring MVC 中使用AOP 进行统一日志管理--XML配置实现
1.介绍 上一篇博客写了使用AOP进行统一日志管理的注解版实现,今天写一下使用XML配置实现版本,与上篇不同的是上次我们记录的Controller层日志,这次我们记录的是Service层的日志.使用的 ...
- Spring Boot中防表单重复提交以及拦截器登录检测
目录 理论 演示 源码 理论 在用户登录后,如果按F5刷新会出现表单重复提交的问题,解决这个问题后,如果没有拦截器登录检测,就会造成,任意用户可以登录后台界面,所以要有拦截器登录检测. 相关的逻辑步骤 ...
- spring boot中利用mybatis-generator插件生成代码
使用Idea在spring boot中集成mybatis-generator,自动生成mapper.xml model dao 文件 一.配置 pom.xml 在pom.xml的<plugi ...
- spring内容协商管理_Spring框架中的内容协商
spring内容协商管理 1.简介 使用BeanNameViewResolver完成的工作就是,我们刚刚在Spring上下文中创建了多个bean视图以生成预期的输出. Spring很快引入了内容协商策 ...
- Spring Boot中使用模板引擎引用资源
目录 概念 演示 概念 在Spring Boot中可以通过模板引擎去引用资源,如果项目改变了,也是可以跑的,不需要自己手动一个个去改链接. 演示 运行截图如下: 但修改properties文件: se ...
- springboot初始化逻辑_详解Spring Boot中初始化资源的几种方式
假设有这么一个需求,要求在项目启动过程中,完成线程池的初始化,加密证书加载等功能,你会怎么做?如果没想好答案,请接着往下看.今天介绍几种在Spring Boot中进行资源初始化的方式,帮助大家解决和回 ...
- Spring MVC中静态资源的处理
Spring MVC中静态资源的处理 REST风格的资源URL中不带后后缀,比如 /blog/tom -> 用户tom的blog资源 /order/1234 -> 订单号为1234的订单资 ...
- spring mvc 中静态资源404、302错误
[求教]spring mvc 中静态资源404.302错误 (2019/3/22补充)在新的项目中也偶尔遇到资源被拦截的情况(前提我已经设置了各种静态资源不被拦截的措施),至今仍然没能找到具体原因,所 ...
最新文章
- 【快速入门系列】简述 for...in 和 for...of 区别
- Java 巨坑篇之无底深坑Long类型
- 交换机复习笔记 广播风暴抑制
- alexa api php,PHP使用Alexa API获取网站的Alexa排名例子
- 老榕智能建站软件_2020年,10大最佳免费建站软件
- 7.11.4 第一个程序 设置环境变量
- windows环境给redis配置密码
- oracle 中此处列不允许,oracle-序列 ora-02287 此处不允许序号
- VC2008中使用GDI+(转)
- LIRe 源代码分析 7:算法类[以颜色布局为例]
- AcWing 208. 开关问题 (高斯消元+状压)打卡
- ios 文本翻转_反转文字的方法_深入浅出 iPhone 开发 (使用 Swift4)_iOS视频-51CTO学院...
- 百度地图API相关点
- 【信号与系统|吴大正】4:信号分解、傅里叶变换与信号谱(下)
- 群联PS3111坏硬盘修复记录
- 计算机怎么清理CAD,怎么完全卸载cad
- [双目视差] 单双目MATLAB 相机标定(二)双目摄像机标定
- matlab 图片字符切割,基于MATLAB的图片中字符的分割与识别
- 初中英语语法(006)-特殊疑问句·祈使句·感叹句
- 鸿蒙系统发布会门票,早鸟票最后一天!继鸿蒙系统发布后,华为又准备搞事情了!...
热门文章
- Palo Alto Networks 支持仪表盘漏洞泄露数千份客户支持工单
- 这个TsuNAME 新漏洞可对关键 DNS 服务器发动 DDoS 攻击
- windows curl ssl版本号编译
- VMware SDS 之一:什么是VSAN??
- SocketType 枚举----指定 Socket 类的实例表示的套接字的类型
- 某化工学院安装锐捷elog
- The new year,new mood,new plan~~
- Linux系统中网络配置详解(一)
- ubuntu 13.10 64位安装及配置 google拼音输入法及Adobe flash player、mp3 插件安装、中文GBK编码等 -转
- Linux系统启动过程分析 -转