常见问题--post发送参数使用httpservletrequest读取为空

1)springcloud项目中使用request.getparameter读取参数为空

原因:使用restcontroller导致,之前为controller。而通过requestbody注解封装为对象会自动映射参数。

restcontroller导致无法使用httprequest读取参数。

参考restcontroller和controller注解有什么不同

2)dev环境通过zuul访问swagger无效

原因:防火墙导致,办公网是内网,dev环境是外网。内网仅开通了部分端口号,而springcloud项目端口号不在范围内,内网防火墙导致无法通过外网访问。

3)dev通过zuul无法访问springcloud项目,但本地通过feign访问eureka中注册的服务实例可以访问成功。

本地springcloud服务注册到了dev环境的eureka,本地其他消费者通过zuul调用注册到dev的本地springcloud服务。访问出错,因为内网对应eureka端口号是开墙的,

但zuul服务访问本地springcloud服务的端口号是未开墙的,导致访问失败。另外,zuul网关的作用是所有请求都经过zuul(类似nginx),通过zuul后再通过zuul获取对应的ip进行访问,注意,ip端口号不会返回给请求方,否则网关的作用就失效了。

而feign调用是通过eureka获取被调用方ip,是点对点的,直接将ip端口号返回给调用方,而本地消费者和本地springcloud服务都在内网,所以可以直接访问。

 

上一篇:HttpServletrequest 与HttpServletResponse总结


下一篇:HttpServletRequest中读取HTTP请求的body