Spring Cloud Feign中如何传递对象作为请求参数?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2136个文字,预计阅读时间需要9分钟。
Spring Cloud Feign 是一种声明式服务调用的工具,它通过接口代理的方式简化了微服务之间的调用。它允许开发者定义一个接口,并通过注解指定调用哪个微服务的哪个方法,从而实现服务调用的自动化。使用 Feign 可以使微服务的调用变得简单,就像调用本地服务一样,但它在处理请求参数方面存在一些不足。以下是使用 Feign 代理 GET 请求时的示例:
概述Spring Cloud Feign 用于微服务的封装,通过接口代理的实现方式让微服务调用变得简单,让微服务的使用上如同本地服务。但是它在传参方面不是很完美。在使用 Feign 代理 GET 请求时,对于简单参数(基本类型、包装器、字符串)的使用上没有困难,但是在使用对象传参时却无法自动的将对象包含的字段解析出来。
如果你没耐心看完,直接跳到最后一个标题跟着操作就行了。
@RequestBody对象传参是很常见的操作,虽然可以通过一个个参数传递来替代,但是那样就太麻烦了,所以必须解决这个问题。
我在网上看到有人用 @RequestBody 来注解对象参数,我在尝试后发现确实可用。这个方案实际使用 body 体装了参数(使用的是 GET 请求),但是这个方案有些问题:
- 注解需要在 consumer 和 provider 两边都有,这造成了麻烦
- 使用接口测试工具 Postman 无法跑通微服务,后来发现是因为 body 体的格式选择不正确,这个格式不是通常的表单或者路径拼接,而是 GraphQL。我没有研究过这种格式应该如何填写参数,但是 Postman 上并没有给出像表单那样方便的格式,这对于测试是很不利的。
本文共计2136个文字,预计阅读时间需要9分钟。
Spring Cloud Feign 是一种声明式服务调用的工具,它通过接口代理的方式简化了微服务之间的调用。它允许开发者定义一个接口,并通过注解指定调用哪个微服务的哪个方法,从而实现服务调用的自动化。使用 Feign 可以使微服务的调用变得简单,就像调用本地服务一样,但它在处理请求参数方面存在一些不足。以下是使用 Feign 代理 GET 请求时的示例:
概述Spring Cloud Feign 用于微服务的封装,通过接口代理的实现方式让微服务调用变得简单,让微服务的使用上如同本地服务。但是它在传参方面不是很完美。在使用 Feign 代理 GET 请求时,对于简单参数(基本类型、包装器、字符串)的使用上没有困难,但是在使用对象传参时却无法自动的将对象包含的字段解析出来。
如果你没耐心看完,直接跳到最后一个标题跟着操作就行了。
@RequestBody对象传参是很常见的操作,虽然可以通过一个个参数传递来替代,但是那样就太麻烦了,所以必须解决这个问题。
我在网上看到有人用 @RequestBody 来注解对象参数,我在尝试后发现确实可用。这个方案实际使用 body 体装了参数(使用的是 GET 请求),但是这个方案有些问题:
- 注解需要在 consumer 和 provider 两边都有,这造成了麻烦
- 使用接口测试工具 Postman 无法跑通微服务,后来发现是因为 body 体的格式选择不正确,这个格式不是通常的表单或者路径拼接,而是 GraphQL。我没有研究过这种格式应该如何填写参数,但是 Postman 上并没有给出像表单那样方便的格式,这对于测试是很不利的。

