spring boot REST源码学习

REST理论基础
REST On Spring Web MVC
REST On Spring Web Flux

服务端核心接口

  1. 定义相关
  • @Controller
  • @RestController
  1. 映射相关
  • @RequestMapping
  • @PathVariable
  1. 方法相关
  • RequestMethod

自描述消息

第一优先顺序:text/html -> application/xhtml+xml -> application/xml
第二优先顺序:image/webp -> image/apng
学习源码路径:
@EnableWebMvc
DelegatingWebMvcConfiguration
WebMvcConfigurationSupport #addDefaultHttpMessageConverters
RequestMapping HandlerAdapter

所有Http自描述消息处理器均在messageConverters,这个集合会传递到RequestMappingHandlerAdapter,最终控制写出。

messageConverters,其中包含很多自描述消息类型的处理,比如JSON、 XML、TEXT等
以application/json为例,Spring Boot中默认使用Jackson2序列化方式
其中媒体类型:
application/json,它的处理类 MappingJackson2HttpMessageConverter
1、读read:通过HTTP请求内容转化为对应的Bean
2、写writer
:通过Bean序列化为对应文本内容作为响应内容

实现AbstractHttpMessageConverter抽象类
1、supports方法:是否支持当前POJO类型
2、readInternal方法:读取HTTP请求中的内容 ,并且转化成相应的POJO对象(通过Properties内容转化为JSON)
3、writerInternal方法:将POJO的内容序列化成文本内容(Properties格式 ),最终输出到HTTP响应中(通过JSON内容转化为Properties)
@RequestMapping 中的consumes对应 请求头“content-type”
@RequsetMapping 中的products对应头“Accept”
HttpMessageConverter执行逻辑:
读操作:尝试是否能读取,canRead方法去尝试 ,如果返回true下一步执行read
写操作:尝试是否能写入,canRead方法去尝试 ,如果返回true下一步执行write

你可能感兴趣的:(spring boot REST源码学习)