【OpenFeign】 GET 示例
【OpenFeign】 GET 示例
Metadata
title: 【OpenFeign】 GET 示例
date: 2023-01-02 19:42
tags:
- 行动阶段/完成
- 主题场景/组件
- 笔记空间/KnowladgeSpace/ProgramSpace/ModuleSpace
- 细化主题/Module/OpenFeign/示例
categories:
- OpenFeign
keywords:
- OpenFeign
description: 【OpenFeign】 GET 示例
【OpenFeign】 GET 示例
在向服务器获取资源时,一般使用 GET 请求,比如查询数据。
1. 没有参数
没有参数就很简单,只需要使用@GetMapping
标识好请求路径就可以了。
@GetMapping("/noParam}")
public List<Order> noParam();
2. 多个基础类型参数
Get 请求多个参数时,需要使用@RequestParam
或者@PathVariable
注解,这是因为在加载方法元数据的时候,如果该形参没有注解,默认会直接将其放在请求体中,这样 GET 请求时就会报错。
而且注解中的value
属性必须指定绑定的参数名,不然会报错RequestParam.value() was empty on parameter 0
。
案例:
@GetMapping("insert")
public List<Order> insertOrder(@RequestParam("accountId") Long accountId, @RequestParam("commodityCode") String commodityCode, @RequestParam("count") Long count, @RequestParam("money") Long money);
@GetMapping("id/{id}")
public List<Order> id(@PathVariable("id") String id);
4. 集合数据参数
在 Spring MVC 使用 GET 请求传递集合参数时,需要这么写:
@GetMapping("/noParam")
public List<Order> noParam(@RequestParam(list) List<Long> list);
在请求时,URL 集合值使用逗号隔开:
http://localhost:9000/order/noParam?list=22,33,44
在使用 Feign 调用时,直接调用就可以了,可以从日志看到,Feign 自动将集合类型的参数进行了解析拼接。
5. 单个对象参数
当 Get 请求参数超过三个时,就需要进行查询参数封装为对象。
上面说到当参数没有注解时,就会放入到请求体中,但是@RequestParam
不支持直接传递对象类,这时就需要使用@SpringQueryMap
注解,它可以将对象属性及值,转为键值对拼接在 URL 后面。
@GetMapping("/get")
public Order getOrder(@SpringQueryMap Order order);
日志如下:
6. 多个对象参数
多个对象参数时,只需要使用多个@SpringQueryMap
即可:
@GetMapping("/get")
public Order getOrder(@SpringQueryMap Order order,@SpringQueryMap Account account);
多个对象参数加基本类型参数时,只需要添加对应的注解即可,需要注意实体类中的属性和这个基础类型参数名不能相同,不然拼接到 URL 中,两个同名参数传递过去就会覆盖了。
@GetMapping("/get")
public Order getOrder(@SpringQueryMap Order order,@RequestParam("accountId") Long accountId);
7. 下载文件
下载文件需要注意的是,应该返回二进制数据,还有 GET 请求时,需要对 URL 进行编码,不然会报错编码不符合规范
,其他没什么区别。
@GetMapping("/download")
public ResponseEntity<byte[]> download(@RequestParam("filePath") String filePath) ;
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 蝶梦庄生!
评论