iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >RestTemplate Get请求如何实现bean参数传递
  • 131
分享到

RestTemplate Get请求如何实现bean参数传递

2023-07-04 14:07:05 131人浏览 泡泡鱼
摘要

今天小编给大家分享一下RestTemplate Get请求如何实现bean参数传递的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起

今天小编给大家分享一下RestTemplate Get请求如何实现bean参数传递的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

项目场景

spring 的 RestTemplate 是一个健壮的、流行的基于 Java 的 Http客户端。

RestTemplate实现request param参数传送,如果如下所示,直接传一个map对象,调试之后是不会接收到参数的

Map<String,Object> param = new HashMap<String,Object>();param.put("since",10);restTemplate.getForObject("https://api.GitHub.com/users" , UserDto.class, param);

所以,正确的用法是使用占位符:

Map<String,Object> param = new HashMap<String,Object>();param.put("since",10);restTemplate.getForObject("https://api.github.com/users?since={since}" , UserDto.class, param);

问题描述

但是参数一多,我们每个都写占位符,那不是很麻烦,直接丢一个javabean不可以?直接丢个javabean,或者转为map参数都不能直接传过来

RestTemplate Get请求如何实现bean参数传递

原因分析

通过查看RestTemplate源码org.springframework.WEB.client.RestTemplate#initUriTemplateHandler

RestTemplate Get请求如何实现bean参数传递

DefaultUriBuilderFactory是RestTemplateURL处理的工厂类,基层接口是UriTemplateHandler,所以可以重新定义一下UriTemplateHandler

解决方案

下面介绍一种方法,可以重写UriTemplateHandler 接口,在RestTemplate源码里找到这个接口是对接口参数进行处理的

package com.example.resttemplate.configuration;import lombok.extern.slf4j.Slf4j;import org.springframework.util.LinkedMultiValueMap;import org.springframework.util.MultiValueMap;import org.springframework.web.util.DefaultUriBuilderFactory;import org.springframework.web.util.UriComponentsBuilder;import org.springframework.web.util.UriTemplateHandler;import java.net.URI;import java.util.Map;@Slf4jpublic class RestGetUriTemplateHandler implements UriTemplateHandler {    private UriTemplateHandler uriTemplateHandler = new DefaultUriBuilderFactory();    @Override    public URI expand(String uriTemplate, Map<String, ?> uriVariables) {    // 使用UriComponentsBuilder 构建请求的链接,也是拼参数的方法        UriComponentsBuilder builder = UriComponentsBuilder                .fromHttpUrl(uriTemplate);        for (Map.Entry<String, ?> entry : uriVariables.entrySet()) {            builder.queryParam(entry.geTKEy(), entry.getValue());        }        String uriString = builder.toUriString();        log.info("uriString:[{}]" , uriString);        return uriTemplateHandler.expand(uriString , uriVariables);    }    @Override    public URI expand(String uriTemplate, Object... uriVariables) {        return uriTemplateHandler.expand(uriTemplate, uriVariables);    }}

使用Hutool的工具类,转换bean类为map对象,import cn.hutool.core.bean.BeanUtil;

restTemplate.setUriTemplateHandler(new RestGetUriTemplateHandler());Map<String,Object> param = BeanUtil.beanToMap(queryDto);restTemplate.getForObject("https://api.github.com/users/mojombo", UserDto.class , param);

也可以借助apache-commont的工具类进行转换,import org.apache.commons.beanutils.BeanUtilsBean;

Map<String, String> paramMap = BeanUtilsBean.getInstance().describe(bean);

运行之后,可以发现参数带上去了,之后调第三方接口,直接传个javabean就可以,方便很多,也可以对javabean转map的操作进行封装,之后直接调用

RestTemplate Get请求如何实现bean参数传递

以上就是“RestTemplate Get请求如何实现bean参数传递”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网精选频道。

--结束END--

本文标题: RestTemplate Get请求如何实现bean参数传递

本文链接: https://www.lsjlt.com/news/345959.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • RestTemplate Get请求如何实现bean参数传递
    今天小编给大家分享一下RestTemplate Get请求如何实现bean参数传递的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起...
    99+
    2023-07-04
  • Axios get post请求传递参数的实现代码
    目录Axios概述 一、 安装三、 axiosAPI四、请求配置五、响应内容六、默认配置七、拦截器八、错误处理九、取消Axios概述  首先,axios是基于pr...
    99+
    2022-11-13
    axios get post请求传递参数 axios get post请求 axios传递参数
  • Vue之请求如何传递参数
    目录一、get请求1、直接拼接2、params属性二、post请求1、data属性传递2、params属性传递三、常见的 Content-Type 类型1、application/x...
    99+
    2023-05-14
    Vue请求传递参数 Vue请求 Vue传递参数
  • POST请求和GET请求怎么传递和接收解析参数
    本篇内容介绍了“POST请求和GET请求怎么传递和接收解析参数”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成...
    99+
    2024-04-02
  • thinkphp如何传递GET参数
    这篇文章主要介绍“thinkphp如何传递GET参数”,在日常操作中,相信很多人在thinkphp如何传递GET参数问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”thinkphp如何传递GET参数”的疑惑有所...
    99+
    2023-07-05
  • RestTemplate实现发送带headers的GET请求
    目录RestTemplate 发送带headers的GET请求发送自定义header的POST请求发送自定义header的GET请求结果RestTemplate优雅的发送Get请求方...
    99+
    2024-04-02
  • Vue请求怎么传递参数
    本篇内容介绍了“Vue请求怎么传递参数”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、get请求get请求没有请求体,传递的参数是添加到u...
    99+
    2023-07-05
  • java如何获取get请求参数
    在Java中,可以使用HttpServletRequest对象来获取GET请求参数。HttpServletRequest类是Java...
    99+
    2023-10-21
    java
  • php如何获取get请求参数
    在PHP中,可以通过超全局数组$_GET来获取GET请求参数。以下是一些示例:1. 获取单个GET请求参数:```php$id = ...
    99+
    2023-08-15
    php
  • RestTemplate怎么实现发送带headers的GET请求
    这篇文章主要讲解了“RestTemplate怎么实现发送带headers的GET请求”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“RestTemplate怎么实现发送带headers的GET...
    99+
    2023-06-25
  • django如何获取get请求参数
    在Django中,可以通过`request.GET`来获取GET请求的参数。`request.GET`是一个类字典的对象,你可以通过...
    99+
    2023-09-26
    django
  • SpringBoot怎么用实体接收Get请求传递过来的多个参数
    这篇文章主要介绍了SpringBoot怎么用实体接收Get请求传递过来的多个参数的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringBoot怎么用实体接收Get请求传递过来的多个参数文章都会有所收获,下面...
    99+
    2023-06-30
  • jquery如何获取get请求的参数
    本篇内容介绍了“jquery如何获取get请求的参数”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在Web开发中,GET请求是非常常见的一种...
    99+
    2023-07-06
  • SpringBoot如何获取Get请求参数详解
    目录前言一、直接在请求路径中二、参数跟在 号后面1,获取参数的基本方法2、使用 map 来接收参数3、接收一个集合4、通过对象接收参数总结前言 利用 Spring Boo...
    99+
    2022-12-08
    springboot get请求参数 spring boot获取请求参数 springboot 请求
  • Spring MVC实现GET请求接收Date类型参数
    目录SpringMVC GET请求接收Date类型参数Controller方法定义SpringMVC接收哪些类型参数参数支持的数据类型使用要求自定义类型转换器使用 ServletAP...
    99+
    2024-04-02
  • SpringBoot用实体接收Get请求传递过来的多个参数的两种方式
    目录一、Controller层不带任何注解接收参数二、Controller层通过@ModelAttribute接收参数最近项目中Controller层查询接口需要通过实体来接受前端传...
    99+
    2024-04-02
  • vue中的get方法\post方法如何实现传递数组参数
    目录get方法\post方法如何传递数组参数第一部分:vue中get方法如何传递数组参数 下面列出我的接口格式及解决方法的源码vue get与post传参方式1.post:...
    99+
    2024-04-02
  • nGrinder中如何在GET请求中发送参数
    本篇文章为大家展示了nGrinder中如何在GET请求中发送参数,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。在GET请求脚本中添加添加信息头、cookies和自定义参数,有两种方式:一种是在UI界...
    99+
    2023-06-05
  • 小程序 POST 请求传递 FormData 格式参数
    场景 向服务端发起POST请求时,有些接口的参数需要以 FormData 形式传递。 小程序中没有FormData对象,使用 let formdata = new FormData() 创建对象,会报...
    99+
    2023-09-04
    小程序 javascript
  • 如何使用AutoMapper实现GET请求
    这篇文章主要讲解了“如何使用AutoMapper实现GET请求”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用AutoMapper实现GET请求”吧!需求需求很简单:实现GET请求获取...
    99+
    2023-06-22
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作