SpringMVC之yaml数据交换格式实现

SpringMVC之yaml数据交换格式实现

总所周知,spring mvc默认是支持json/xml数据交换格式的,那如果用yml做前后台数据交换又该怎样呢?接下来将一一介绍如何在Spring MVC中注册
一个新的数据交换格式及应用。

实现yaml消息转换器

因为yaml在spring中没有对应的转换器,所以需要重新实现一个,源码参考YamlMessageConverter
首先需要定义一个构造器,将需要使用的MIME-TYPE注册到该转换器中。如果这里不注册,那请求返回406且spring mvc无日志输出,
这样很不利于调错,spring mvc内部会抛出一个HttpMediaTypeNotSupportedException异常。然后就是实现抽象父类的几个抽象方法,对请求发送过来的消息进行编解码。

mvc容器中注册消息转换器

其次在WebMvcConfigurerAdapter中注册消息转换器,通过实现下面两个方法进行
转换器注册:

  • configureContentNegotiation:让spring mvc能识别".yml"尾缀,并交给YamlMessageConverter转换器解析传入的参数
  • extendMessageConverters:不抛弃spring原有的转换器基础上增量增加当前yml转换器,默认注册了哪些转换器可以参考WebMvcConfigurationSupport#addDefaultHttpMessageConverters源码

controller中指定consume MediaType

controller代码参见:IndexController#getYamlRandomBean,该接口
接收请求数据类型为text/yaml,返回数据类型为application/json。这里解释一下spring mvc中consume和produce作用:

  • consumes:接口能接收的请求数据类型,对应前台的ajax请求的contentType
  • produces:接口会返回的请求数据类型,对应前台的accept请求头
    浏览器截图及解释如下:

前台如何写

参考文件index.jsp

所有源码参见我的Github仓库:https://github.com/Crabime/coding

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值