REST理论基础
REST On Spring Web MVC
REST On Spring Web Flux
服务端核心接口
- 定义相关
- @Controller
- @RestController
- 映射相关
- @RequestMapping
- @PathVariable
- 方法相关
- 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
网友评论