SpringCloud通过Feign传递List类型参数

首先明确一点,SpringCloud通过Fegin如果是多个参数,其中一个参数是List,那么是传不过去的,单个List是可以的。

1、单个List实体传递

@RequestMapping("/secret/batchInsert")
public int batchInsert(@RequestBody List<BatchSecretBO> batchSecretBOList){
    return batchSecretService.batchInsert(batchSecretBOList);
}

2、基本类型传递

基本类型可以通过数组的方式传递,代码如下所示:

@RequestMapping(value = "/stat/merchant/get_merchant_compare_info", method = RequestMethod.POST)
@ResponseBody
MerchantCompareTotalInfo getMerchantCompareInfo(@RequestParam("licenseNoList") String[] licenseNoList);
### Feign远程调用支持的参数类型 Feign作为声明式的HTTP客户端,其设计目标是为了简化服务间的通信。它支持多种类型参数绑定到HTTP请求的不同部分,以下是常见的几种参数类型及其使用场景: #### 1. **Path Variables** 通过`@PathVariable`注解可以将方法参数映射到URL路径中的占位符上。这种参数通常用于指定资源的具体标识。 ```java @GetMapping("/user/{id}") User findById(@PathVariable("id") Long id); ``` 上述代码片段展示了如何通过`@PathVariable`将`id`参数绑定到路径变量中[^4]。 #### 2. **Query Parameters** 查询参数可以通过`@RequestParam`注解来实现。这些参数会附加在URL后面,形成类似于`?key=value&key2=value2`的形式。 ```java @GetMapping("/search") List<User> searchUsers(@RequestParam("name") String name, @RequestParam("age") Integer age); ``` 此示例说明了如何利用`@RequestParam`传递多个查询参数给服务器端[^2]。 #### 3. **Request Body** 对于POST或PUT请求,数据体内的内容可通过`@RequestBody`注解进行传输。这适用于复杂的对象或者大量数据的情况。 ```java @PostMapping("/create") ResponseEntity<String> createUser(@RequestBody User user); ``` 这段代码表明当创建新用户时,整个`User`对象会被序列化并放入请求主体内发送出去。 #### 4. **Headers** 有时我们需要自定义请求头信息,比如认证令牌或者其他元数据。这时就可以借助于`@RequestHeader`注解完成这一需求。 ```java @GetMapping("/secure-data") String getSecureData(@RequestHeader("Authorization") String token); ``` 在这里可以看到,我们能够轻松地向每次请求添加特定头部字段。 #### 5. **Form Data** 如果要上传表单数据,则应该考虑使用`@ModelAttribute`或者是直接操作多部件实体的方式;不过更常见的是配合Spring MVC框架下的形式处理机制一起工作。 ```java @PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) void uploadFile(@ModelAttribute FileUpload fileUpload); ``` 尽管上面的例子并非严格意义上的Feign功能展示,但它确实反映了实际开发过程中可能遇到的需求之一。 ### 总结 综上所述,Feign提供了灵活丰富的选项让用户可以根据具体业务逻辑选择合适的参数类型来进行远程过程调用(RPC),从而极大地提高了微服务体系架构下不同模块之间协作效率的同时也降低了复杂度[^1]. ```java // 示例综合应用 package cn.zsh.order.client; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.*; @FeignClient("example-service") public interface ExampleServiceClient { @GetMapping("/data/{id}") ResponseEntity<DataModel> getDataById( @PathVariable("id") long id, @RequestParam(required = false) String filter); @PostMapping("/submit") void submitData(@RequestBody ComplexObject data); @GetMapping("/headers") String checkCustomHeader(@RequestHeader("X-Custom-Header") String customHeaderValue); } ```
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

地表最强菜鸡

你的鼓励将是我创作最大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值