Spring REST API整理

REST (Representational State Transfer),以数据交互为主要内容所设计的系统服务。通过URL来作为资源识别的依据。

Spring MVC充分支持了REST,有两种实现方式:

  1. 协商资源表述,通过ContentNegotiatingViewResolver来向请求方传递合适资源表述形式
  2. 使用HTTP信息转换器,即Message Converter来将资源(即控制器产生的数据)转换为服务与客户端的表述形式,并传递给请求方

第一种模式比较复杂,一般实现REST系统通过第二种方式,更直接更易配置。

使用HTTP信息转换器

在使用HTTP信息转换器的过程中,最重要的两个元素为:

  • 数据(控制器所产生的结果)
  • 消息转换器(message converter)

Spring MVC在配置的时候会默认注册一系列消息转换器,其中最主要的有:

  • MappingJackson2HttpMessageConverter:
    用来转化JSON和类型化的对象或非类型化的HashMap,需要Jackson 2 JSON包
  • Jaxb2RootElementHttpMessageConverter
    用来在XML(text/xml或application/xml)和使用JAXB2注解的对象间互相读取和写入,需要JAXB v2包

只要message converter所依赖的jar包存在于类路径下,这些message converter就会被注册如Spring MVC的上下文中。

Controller产生的数据具体将调用哪一张message converter是由客户请求中的Accept头信息来决定的。

@ResponseBody和@RequestBody

  • @ResponseBody

使用@ResponseBody标注Controller一个具体方法时,程序会告诉Spring MVC跳过视图解析过程,并且去根据请求头中的Accept信息来调用对应的message converter将数据转化客户用需要的资源表达形式。

另外我们可以@RequestMapping注解的produce声明属性里来明确表示一个方法只处理符合某个特定Accept的请求。

  • @RequestBody
    与@ResponseBody相对应的是@RequestBody,该注解用来标注Controller中某个方法的一个参数。Spring MVC会根据客户请求头中的Cont
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值