feign使用url参数传参@SpringQueryMap使用

简介: feign使用url参数传参@SpringQueryMap使用

今天使用open-feign发起请求时发现个问题,我特别喜欢的url参数传参不好使了:

@FeignClient("another-service")
public interface MyFeignClient {
    @GetMapping("/foo/bar")
    Foo<Bar> get(Foo bar);
}

对应我们的controller

@GetMapping("foo/bar")
public Foo<Bar> get(Foo bar) {
    // ...
    return foo;
}

然后发起了请求发现根本没收到参数。。。

但如果我们添加了注解@RequestParam

@FeignClient("another-service")
public interface MyFeignClient {
    @GetMapping("/foo/bar")
    Foo<Bar> get(@RequestParam Foo bar);
}

会发现项目启动抛出异常

Caused by: java.lang.IllegalStateException: RequestParam.value() was empty on parameter 0

说是没添加参数名,好我们添加一下

@FeignClient("another-service")
public interface MyFeignClient {
    @GetMapping("/foo/bar")
    Foo<Bar> get(@RequestParam("bar") Foo bar);
}

但还是不对,我们打开日志:

2023-11-25T11:25:16.502+08:00 TRACE [user-service,,,] 2558612 --- [           main] s.n.www.protocol.http.HttpURLConnection  : ProxySelector Request for http://127.0.0.1:8000/front/squarePost/foo/bar?bar=Foo%28bar%3Dbar%29

可以看到我们的参数变成了:

http://127.0.0.1:8000/foo/bar?bar=Foo%28bar%3Dbar%29

我们用浏览器转一下码

decodeURIComponent("http://127.0.0.1:8000/foo/bar?bar=Foo%28bar%3Dbar%29")

得到:

原来是直接给我toString了,并且把整个对象当作参数传递过去了,我们此处使用@SpringQueryMap注解解决

@FeignClient("another-service")
public interface MyFeignClient {
    @GetMapping("/foo/bar")
    Foo<Bar> get(@SpringQueryMap Foo bar);
}

这下就对了:

2023-11-25T11:25:16.502+08:00 TRACE [user-service,,,] 2558612 --- [           main] s.n.www.protocol.http.HttpURLConnection  : ProxySelector Request for http://127.0.0.1:8000/front/squarePost/foo/bar?bar=bar
相关文章
|
2月前
|
前端开发 JavaScript
前端JS截取url上的参数
文章介绍了两种前端JS获取URL参数的方法:手动截取封装和使用URLSearchParams。
48 0
|
3月前
|
开发框架 前端开发 .NET
Asp.net Webapi 的 Post 方法不能把参数加到 URL 中?试试这样写
Asp.net Webapi 的 Post 方法不能把参数加到 URL 中?试试这样写
|
3月前
|
Java
JAVA 获取 URL 指定参数的值
JAVA 获取 URL 指定参数的值
46 0
|
4月前
|
JavaScript 前端开发 数据格式
URL编码【详解】——Javascript对URL进行编码解码的三种方式的区别和使用场景,axios请求拦截器中对get请求的参数全部进行URL编码
URL编码【详解】——Javascript对URL进行编码解码的三种方式的区别和使用场景,axios请求拦截器中对get请求的参数全部进行URL编码
237 0
|
4月前
|
JavaScript
js 获取并解析 url 中参数的三种方法
js 获取并解析 url 中参数的三种方法
430 0
|
5月前
|
文字识别 算法 API
视觉智能开放平台产品使用合集之在调用接口传入的图片URL参数,文件在本地或者非上海地域OSS链接,该怎么办
视觉智能开放平台是指提供一系列基于视觉识别技术的API和服务的平台,这些服务通常包括图像识别、人脸识别、物体检测、文字识别、场景理解等。企业或开发者可以通过调用这些API,快速将视觉智能功能集成到自己的应用或服务中,而无需从零开始研发相关算法和技术。以下是一些常见的视觉智能开放平台产品及其应用场景的概览。
|
5月前
|
Web App开发 移动开发 安全
如何做到修改 url 参数页面不刷新
如何做到修改 url 参数页面不刷新
|
6月前
|
存储 JavaScript 前端开发
js原生方法,获取url上面所有参数,并返回一个对象
JavaScript函数`getUrlParameters`用于从URL中提取所有参数并返回一个键值对对象。它接收URL,分割查询字符串,解码参数对,并存储在对象中。重复参数键会被存储为数组。
|
6月前
|
存储 Java 数据库连接
实时计算 Flink版产品使用合集之jdbccatalog中能指定url参数吗
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStreamAPI、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
6月前
|
JavaScript
如何在JS中实现修改URL参数而不刷新页面
如何在JS中实现修改URL参数而不刷新页面