首页  >  文章  >  springframework.web.client RestClient 是否处理 @requestParam

springframework.web.client RestClient 是否处理 @requestParam

WBOY
WBOY转载
2024-02-10 17:15:07904浏览

php小编香蕉将为大家解答一个关于Spring Framework中的问题:RestClient是否处理@RequestParam?在Spring Framework中,使用RestTemplate进行HTTP请求时,@RequestParam注解用于从请求URL中获取参数。那么RestClient是否能够正确处理@RequestParam注解呢?接下来,我们将详细探讨这个问题,帮助您更好地理解和使用Spring Framework中的RestClient。

问题内容

我尝试这样做:

@getmapping("/db/video/getall")
public responseentity<list<videodto>> getallvideo(@requestparam string owneremail) {        
        return ....;
    }
import org.springframework.web.client.restclient;

restclient restclient = restclient.create("http://localhost:8095");

list<videodto> result = restclient.get()
    .uri("/db/video/getall")
    .accept(mediatype.application_json)
    .retrieve()
    .body(new parameterizedtypereference<list<videodto>>() {});
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot</artifactId>
    <version>3.2.1</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>6.1.2</version>
  </dependency>

但我找不到代码示例,显示 restclient 如何将owneremail 作为@requestparam 传递。

我找到了 @pathvariable 代码示例。

那么,restclient 是否处理 @requestparam ?

解决方法

对于 get 请求,您可以在 url 中添加查询参数。 spring 的 uricomponentsbuilder 简化了 uri 的操作。

restclient.get()
    .uri(uricomponentsbuilder.frompath("/db/video/getall")
            .queryparam("owneremail", "email").touristring())
    // ...

对于 post 请求,正文可以设置为 multivaluemap。 content-type 可以根据其内容推断出来。

var parts = new LinkedMultiValueMap<String, Object>();
parts.add("ownerEmail", "emailValue");
restClient.post().uri("/db/video/getall").body(parts).retrieve().body(...);

以上是springframework.web.client RestClient 是否处理 @requestParam的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文转载于:stackoverflow.com。如有侵权,请联系admin@php.cn删除