美文网首页
spring boot REST源码学习

spring boot REST源码学习

作者: 爱斯基摩白 | 来源:发表于2020-03-23 10:01 被阅读0次

    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源码学习

          本文链接:https://www.haomeiwen.com/subject/pwuiyhtx.html