缓存request流
当接口请求的时候使用application/json之类的文本格式的时候,获取的时候需要从request的body体里获取,当需要使用过滤器、拦截器或者AOP的时候,难免会遇到读流的问题,拦截到的request读取过一次之后在Controller中就无法再获取,此处记录解决方案:
当接口请求的时候使用application/json之类的文本格式的时候,获取的时候需要从request的body体里获取,当需要使用过滤器、拦截器或者AOP的时候,难免会遇到读流的问题,拦截到的request读取过一次之后在Controller中就无法再获取,此处记录解决方案:
开发的时候经常会出现接口的变更,而接口的变更又常需兼容老的客户端版本,此时便需要做接口的版本控制,比较好的方案是在header带上version参数,但是不排除有些在url上做控制的,类似/v1/xxx/xxx,/v2_0/xxx/xxx,此文为第二种,使用如下:
kong的安装和配置启动之前一篇博文已经讲过,这里推荐一个UI管理:kong-dashboard,功能还不是很强大,但是可以省去一些比较基础的配置(api,consumers,plugins的管理),安装配置地址如下: 官方链接
摘要:Kong,Mashape开源的API层。是基于Nginx_Lua模块写的。是一个基于openresty的api代理层,数据采用了 Apache Cassandra/PostgreSQL存储,并且提供了一些优秀的插件,比如验证,日志,调用频次限制等。
详细资料见官网:https://getkong.org
环境:ubuntu 16.04
1、下载kong:https://getkong.org/install/ 在此页面选择你的系统,之后再下载相应的系统版本,因为我是 unbuntu 16.04,则下载https://github.com/Mashape/kong/releases/download/0.10.3/kong-0.10.3.xenial_all.deb
搭建springboot的时候比较喜欢用多模块管理,所以先新建一个父maven程序,select archetype时选择maven-archetype-site-simple,创建完后,pom.xml如下
问题: 使用springMVC,一些请求前的校验,都可以在拦截器或者过滤器里做处理,处理完后到Controller层再根据喜好做相关操作,但是遇到content-type是application/json等放在body体里的就尴尬了,读完body,在Controller就无法再获取一次了,或许你可以把request的inputStream读出来缓存两份。但这要动根基了,不划算。另外,如果需要改变某个参数再由@RequestBody注入,又是一个尴尬的问题,可以把
|
|
|
|
pom.xml的配置