返回顶部
首页 > 资讯 > 后端开发 > Python >SpringBoot 如何使用RestTemplate来调用接口
  • 706
分享到

SpringBoot 如何使用RestTemplate来调用接口

2024-04-02 19:04:59 706人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录使用RestTemplate来调用接口1.新建一个配置类,配置RestTemplate的Bean2.多种传输和接收参数的方式2.1postForObject方法postForEn

使用RestTemplate来调用接口

1.新建一个配置类,配置RestTemplate的Bean


import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.Http.client.ClientHttpRequestFactory;
import org.springframework.http.client.SimpleClientHttpRequestFactory;
import org.springframework.WEB.client.RestTemplate;
 

@Configuration
public class RestTemplateConfig {
 
    @Bean
    public RestTemplate restTemplate(ClientHttpRequestFactory factory) {
        return new RestTemplate(factory);
    }
 
    @Bean
    public ClientHttpRequestFactory simpleClientHttpRequestFactory() {
        SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
        factory.setReadTimeout(5000);//单位为ms
        factory.setConnectTimeout(5000);//单位为ms
        return factory;
    } 
}

注意点:如果在编译器中提示factory不能自动注入,那应该时跟其他类有冲突,有多个 ClientHttpRequestFactory

把这个factory的名字改一下,改成其他的就好了,比如这里就直接改成 simpleClientHttpRequestFactory

2.多种传输和接收参数的方式

2.1postForObject方法

postForObject指post请求,并返回一个Object对象。

  • 第1个参数:请求的url地址
  • 第2个参数:其实是HttpEntity,这个类主要有三种构造方法,如下

new HttpEntity(请求体)

new HttpEntity(请求头)

new HttpEntity(请求体,请求头)

  • 第3个参数:返回的结果类型,这里String.class表示返回结果是一个字符串
  • 第4个参数:参数值,这里有Map和 可变参数两种形式(通常用不到,数据通常放在JSON里就全部传输过去了)

2.1.1使用Json来传递和接收数据

首先引入fastjson的pom配置


<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>fastjson</artifactId>
			<version>1.2.49</version>
		</dependency>

在实现类中注入RestTemplate

接下来new一个 ExpressionDomain 对象,将这个对象转化成JSONObject。使用Json来传递数据


public void postByDefault()
{
    ExpressionDomain expressionDomain=new ExpressionDomain("hello","hasaki","win");
    JSONObject jsonObj = (JSONObject) JSONObject.toJSON(expressionDomain);
    
    //设置请求头
    HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
    headers.add("Accept", MediaType.APPLICATION_JSON.toString());
 
    //请求体
    HttpEntity<String> fORMEntity = new HttpEntity<String>(jsonObj.toString(), headers);
    
    //发起请求
    String jsonResult = restTemplate.postForObject("http://localhost:8081/findDataByReflection" , formEntity, String.class);
    
    //将Json字符串解析成对象
    Response resp = JSON.parseObject(jsonResult, new TypeReference<Response>() {});
}

接收端

@RequestBody注解一个参数,用于自动解析Json为对象。返回的Response也是一个对象,添加@ResponseBody注解,将返回Json字符串。解析的时候将Json字符串解析成对象即可。

postForEntity

和getForEntity原理是一样的,下面会讲到。

2.2getForObject方法

getForObject指get请求,并返回一个Object对象。这里有3种方法。

  • 第1个参数:请求的url地址
  • 第2个参数:返回的结果类型,这里String.class表示返回结果是一个字符串。
  • 第3个参数:参数值,这里有Map和 可变参数两种形式

2.2.1 通过Map传参数的方式

可以使用map来封装请求参数,并作为getForObject的第三个参数,同时修改url如下,map中的"1"会替换url中的{1},"2"会替换url中的{2}


Map map = new HashMap();
map.put("1", "hello");
map.put("2", "world");
String result = restTemplate.getForObject("http://localhost:8081/getIds?param1={1}&param2={2}", String.class,map);

接口端:


@RequestMapping(value = "/getIds", method = RequestMethod.GET)
public @ResponseBody String getIds(String param1, String param2) {
    return param1 + param2;
}

2.2.2 通过可变参数的方式

也可以直接将要传递的值放到getForObject方法的参数结尾,数量不限,它会按顺序替换{1}和{2}。接口端代码还是和2.2.1的一样


String result = restTemplate.getForObject("http://localhost:8081/getIds?param1={1}&param2={2}", String.class, "hello", "world");

2.3getForEntity方法

getForEntity和getForObject的用法是一样的,只是其返回结果是一个ResponseEntity,其中包含了更多的响应信息,比如:


		ResponseEntity response = restTemplate.getForEntity("http://localhost:8081/getIds",String.class);
		response.getHeaders();		//响应头
		response.getStatusCode();	//响应码
		response.getBody();			//响应体,即前面的result

RestTemplate调用接口总结

1.这是接口信息


    @PostMapping("/testm")
    public ReturnResult show11(@RequestParam("id") String id,
                               @RequestParam("name") String name) {
        System.out.println(id);
        UserInfo userInfo = userInfoMapper.selectByUserName(name); 
        return ReturnResult.create(userInfo);
    }

这是restTemplate调用


    //Post,@RequestParam---postForEntity
    @Test
    public void sho11() {
        String url = "http://127.0.0.1:8099/user/testm";
        MultiValueMap<String, String> request = new LinkedMultiValueMap<>();
        request.add("id", "12324");
        request.add("name", "nanc");
 
        ResponseEntity<ReturnResult> resp = restTemplate.postForEntity(url, request, ReturnResult.class);
        ReturnResult body = resp.getBody();
        UserInfo data = body.getData();
        System.err.println(data.getUserId());
        System.out.println(data);  
    }

2.接口


    @GetMapping("/testp")
    public ReturnResult show22(@RequestParam String name,
                               @RequestParam Integer age,
                               @RequestParam String clazz) {
        System.out.println(name + "-" + age + "-" + clazz);
        UserInfo userInfo = userInfoMapper.selectByUserName(name);
        return ReturnResult.create(userInfo);
    }

resttemplate


    //Get ,@RequestParam-----getForObject
    @Test
    public void sho12() {
        String url = "http://127.0.0.1:8099/rest/testp?name={name}&age={age}&clazz={clazz}";
        Map<String, Object> map = new HashMap<>();
        map.put("name", "nanc");
        map.put("age", 34);
        map.put("clazz", "12");
        ReturnResult forObject = restTemplate.getForObject(url, ReturnResult.class, map);
        UserInfo data = forObject.getData();
        System.out.println(data);
    }
 

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: SpringBoot 如何使用RestTemplate来调用接口

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

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

猜你喜欢
  • SpringBoot 如何使用RestTemplate来调用接口
    目录使用RestTemplate来调用接口1.新建一个配置类,配置RestTemplate的Bean2.多种传输和接收参数的方式2.1postForObject方法postForEn...
    99+
    2024-04-02
  • Springboot使用RestTemplate调用第三方接口的操作代码
    目录前言Spring Boot如何使用RestTemplate总结前言 工作当中,经常会使用到很多第三方提供的功能或者我们自己家也会提供一些功能给别人使用。一般都是通过相互调用API...
    99+
    2022-12-08
    RestTemplate调用第三方接口 Spring Boot使用RestTemplate
  • SpringBoot如何使用axis调用webservice接口
    本篇内容介绍了“SpringBoot如何使用axis调用webservice接口”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!WebServ...
    99+
    2023-07-02
  • 如何使用RestTemplate调用https接口跳过证书验证
    这篇文章将为大家详细讲解有关如何使用RestTemplate调用https接口跳过证书验证,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。RestTemplate调用https接口跳过证书验证import&...
    99+
    2023-06-25
  • 使用RestTemplate调用https接口跳过证书验证
    目录RestTemplate调用https接口跳过证书验证RestTemplate访问https遇到SSL证书验证错误添加Https证书下载证书导入证书生成keystore文件项目中...
    99+
    2024-04-02
  • springboot如何单独使用feign简化接口调用
    这篇文章主要介绍了springboot如何单独使用feign简化接口调用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。单独使用feign简化接口调用与HttpClient和R...
    99+
    2023-06-29
  • PHP中如何使用BASH接口来调用函数?
    PHP作为一种服务器端脚本语言,其强大的功能和丰富的扩展库,使其成为了众多Web应用程序的首选。在PHP中,我们可以使用BASH接口来调用函数,从而实现更加高效和灵活的编程。 一、什么是BASH接口? BASH接口是PHP的一种扩展库,它允...
    99+
    2023-07-30
    bash 接口 函数
  • 使用RestTemplate 调用远程接口上传文件方式
    目录RestTemplate 调用远程接口上传文件问题描述解决方法第一种方式第二种方式RestTemplate调用远程接口添加请求头RestTemplate 调用远程接口上传文件 问...
    99+
    2024-04-02
  • 一文吃透接口调用神器RestTemplate
    文末可以领取所有系列高清 pdf。 大家好,我是路人,这是 SpringMVC 系列第 21 篇。 本文介绍 Spring web 中特别牛逼的一个类 RestTemplate。 目录 RestTemplate 概述案例代码 ...
    99+
    2023-09-13
    spring java http android spring boot
  • SpringBoot-RestTemplate如何实现调用第三方API
    目录1.在build.grdle加入依赖2.在config包下创建一个RestTemlateConfig3.在model包下创建一个新的包4.Constans类下将调用接口的AppK...
    99+
    2024-04-02
  • 如何解决RestTemplate的getForEntity调用接口乱码的问题
    本篇内容介绍了“如何解决RestTemplate的getForEntity调用接口乱码的问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!R...
    99+
    2023-06-20
  • RestTemplate接口调用神器常见用法汇总
    目录1、RestTemplate 概述2、案例代码2.1、git 地址2.2、关键代码位置2.3、如何运行测试用例?3、发送 Get 请求3.1、普通请求3.2、url 中含有动态参...
    99+
    2024-04-02
  • SpringBoot接口调用后报404如何解决
    这篇“SpringBoot接口调用后报404如何解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“SpringBoot接口调...
    99+
    2023-06-08
  • SpringBoot使用Feign调用其他服务接口
    使用SpringCloud的Feign组件能够为服务间的调用节省编码时间并提高开发效率,当服务本身不复杂时可以单独将该组件拿出使用。 引入依赖 <!-- https://...
    99+
    2024-04-02
  • SpringBoot项目如何使用hutool工具进行http接口调用
    本文小编为大家详细介绍“SpringBoot项目如何使用hutool工具进行http接口调用”,内容详细,步骤清晰,细节处理妥当,希望这篇“SpringBoot项目如何使用hutool工具进行http接口调用”文章能帮助大家解决疑惑,下面跟...
    99+
    2023-06-30
  • SpringBoot 如何使用RestTemplate发送Post请求
    目录背景:1、待访问的API2、返回对象3、将发送Post请求的部分封装如下4、UserInfo对象5、在Service层封装将要发送的参数6、在控制器中调用service中的方法,...
    99+
    2024-04-02
  • SpringBoot怎么调用python接口
    本篇内容介绍了“SpringBoot怎么调用python接口”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、前言SpringBoot作为后...
    99+
    2023-06-21
  • springboot怎么调用restful接口
    要调用RESTful接口,可以使用Spring Boot的内置RestTemplate或者使用Feign客户端。使用RestTemp...
    99+
    2023-10-08
    springboot
  • SpringBoot ApplicationContextAware拓展接口如何使用
    本篇内容介绍了“SpringBoot ApplicationContextAware拓展接口如何使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读...
    99+
    2023-07-05
  • java中如何使用HttpClient调用接口
    目录java使用HttpClient调用接口HttpClient 提供的主要的功能直接言归正传了!!!!上代码java的HttpClient调用远程接口使用方法实例java使用Htt...
    99+
    2022-11-13
    java使用HttpClient HttpClient调用接口 java HttpClient
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作