1. 程式人生 > 其它 >RequestParam,RequestBody,SpringQueryMap

RequestParam,RequestBody,SpringQueryMap

OpenFeign

OpenFeign是Spring Cloud 在Feign的基礎上支援了Spring MVC的註解,如@RequesMapping等等
OpenFeign的@FeignClient可以解析SpringMVC的@RequestMapping註解下的介面,
並通過動態代理的方式產生實現類,實現類中做負載均衡並呼叫其他服務。

RequestParam,RequestBody,SpringQueryMap

1:@GetMapping和@PostMapping:
在Rest服務的RPC呼叫中,一般我們會使用@GetMapping和@PostMapping兩種方式
同時對應的接收引數則會使用@RequestParam和@RequestBody來獲取。

2:@RequestBody:
@RequestBody只能用在Post請求,並且一個Post請求只能有一個@RequestBody。 @RequestBody的引數可以包括複雜型別。

@PostMapping(path = "/update")
Boolean updateServiceInfo(@RequestBody updateXXXXXParams params)

3:@RequestParam:
一般用在Get請求中,但是@RequestParam 的引數只能是基本型別

@GetMapping(path = "/detail")
XXXXX getXXXXXXDetail
(@RequestParam String id);

4:@SpringQueryMap
如果我們是Get請求,但是請求的引數又很多, 比如我在查詢並分頁的時候,我們的入參只有一個查詢的keyword, 但是又有分頁的一些資訊pageNum, pageSize, totalSize, 這時候我們一般會把這些資料封裝有一個pojo, 但是feign的get方式又不支援,這裡我們可以使用openfeign提供的@SpringQueryMap來解決這個問題,傳遞物件引數,讓框架自動解析
step1: 引用POM依賴

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-openfeign-core</artifactId>
    <version>2.2.1.RELEASE</version>
</dependency>

\color{red}{注:spring-cloud.version:Hoxton.SR2 對應的 openfeign-core 版本是:2.2.1}
step2:新增SpringQueryMap註解

@GetMapping(path = "/xxxx /list")
List<XXXXX> getServiceActionsList(@SpringQueryMap XXXXPageParams params);