问题描述
我需要发出这样的请求 host.com/filter1/filter2/filter3?param1= {blah}&param2 = {blah} ,但我遇到了一些问题。
我正在使用POJO来表示路径变量和请求参数。基于this thread,我在feignClient中将其布局如下:
@FeignClient( name = "documentsFeignClient" )
public interface DocumentsFeignClient
{
@RequestLine( "GET /documents" +
"/{filters.entityType}" +
"/{filters.entityId}" +
"/{filters.documentType}"
@Headers( { "Content-Type: application/json","X-User-Id: {userId}","X-Tenant-Id: {tenantId}" } )
Document getDocuments( @PathVariable( "filters" ) AttachedDocumentsFilters filters,@QueryMap AttachedDocumentsQueryMap variablesQueryMap,@Param( "userId" ) Long userId,@Param( "tenantId" ) Long tenantId );
但是,当我从带有空的queryMap的客户端进行呼叫时:documentsFeignClient.getDocuments( filters,null,1L,1L );
,我得到了ReflectiveFeign.java中源代码这部分的NPE:
private RequestTemplate addQueryMapQueryParameters(Object[] argv,RequestTemplate mutable) {
Map<Object,Object> queryMap = (Map<Object,Object>) argv[metadata.queryMapIndex()];
for (Entry<Object,Object> currEntry : queryMap.entrySet()) {
特别是从queryMap检索entrySet的行。奇怪的是,当我在客户端中实际构建查询映射时,出现了noSuchMethodError。
我已经尝试了很多方法-切换参数的顺序(基于其他线程),将@QueryMap更改为@SpringQueryMap等,但是没有任何效果。
我该如何解决?我想我可以为每个单独的字段替换@QueryMap w / @RequestParam,但是我想尝试避免这种情况,因为我们有4个请求参数,并且可能会添加更多。我正在使用假装9.5.0
提前感谢您的帮助
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)