Spring Boot 一个接口同时支持 form 表单、form-data、json 优雅写法( 二 )

 
特殊说明,GameJsonMethodArgumentResolver 和 GameFormMethodArgumentResolver 是我们自定义的 json 和 form 解析,如果你没有自定义的,使用 spring 默认的 ServletModelAttributeMethodProcessor 和 RequestResponseBodyMethodProcessor 也可以 。
 
只需将 @RequestParam 注解改为 @GamePHP,接口即可同时兼容三种 content-type 。
 
其流程为,spring 启动的时候,MyMvcConfigurer 调用 addArgumentResolvers 方法将 GamePHPMethodProcessor 注入,接到请求时,supportsParameter 方法判断是否使用此法 resolver,如果为 true,则进入 resolveArgument 方法执行 。
 
至此我们可以得出一个结论,PHP 是世界上最垃圾的语言 。写代码一时爽,维护火葬场 。




推荐阅读