我需要发出这样的请求:host.com/filter1/filter2/filter3?param1={blah}¶m2={blah},我遇到了一些问题。
我使用pojo来表示路径变量和请求参数。基于这条线索,我在我的假客户机中这样安排:
@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的行。奇怪的是,当我在客户机中实际构建查询Map时,我得到了一个nosuchmethoderror。
我试过很多方法——切换参数的顺序(基于其他线程),将@querymap改为@springquerymap,等等,但是没有一个奏效。
我如何解决这个问题?我想我可以为每个字段替换@querymap w/@requestparam,但我想尽量避免这样做,因为我们有4个请求参数,可能会添加更多。我用的是假9.5.0
提前谢谢你的帮助
暂无答案!
目前还没有任何答案,快来回答吧!