Springboot 中RESTtemplate的使用

news2024/11/17 22:49:42

目录

一 概述

二 应用

1.get请求

2.post请求


一 概述

RESTtemplate提供了http请求连接的功能。spring 框架提供的 RestTemplate 类可用于在应用中调用 rest 服务,它简化了与 http 服务的通信方式,统一了 RESTful 的标准,封装了 http 链接, 我们只需要传入 url 及返回值类型即可。相较于之前常用的 HttpClient,RestTemplate 是一种更优雅的调用 RESTful 服务的方式。

二 应用

先建立一个Springboot项目,写出测试所需的Controller层和entity类。目录如下

先看entity类,用于测试post请求提供入参

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Person {
    private String name;
    private int age;
    private int height;
}

 controller 层,提供get和post请求接口

@RestController
public class TestController {

    @GetMapping("get")
    public String getTest(String str){
        return "ok";
    }

    /**
     * json参数
     * @param person
     * @return
     */

    @PostMapping("/post01")
    public String getPost01(@RequestBody Person person){
        return "ok";
    }

    /**
     * 表单参数
     * @param person
     * @return
     */

    @PostMapping("/post02")
    public String getPost02(Person person){
        return "ok";
    }
}

1.get请求

    @Test
    void testGet(){
        RestTemplate restTemplate = new RestTemplate();
        String url="http://localhost:8080/get?str=ingram";
        String result = restTemplate.getForObject(url, String.class);//以字符串类型返回结果
        ResponseEntity<String> entity = restTemplate.getForEntity(url, String.class);
        System.out.println(result);//以实体类型返回结果
        System.out.println("**********************************************************************");
        System.out.println(entity);
    }

2.post请求

post请求,提供入参的方式有两种,一种是json形式,另一种是表单形式,分别对应于controller层的post01和post02层。

@Test
    void testPost01(){
        RestTemplate restTemplate = new RestTemplate();
        String url="http://localhost:8080/post01";
        Person person = new Person("张三", 18, 181);
        String str = restTemplate.postForObject(url, person, String.class);
        System.out.println(str);

    }

    @Test
    void testPost02(){
        RestTemplate restTemplate = new RestTemplate();
        String url="http://localhost:8080/post02";
        LinkedMultiValueMap<String,Object>map=new LinkedMultiValueMap<>();
        map.add("name","张三");
        map.add("age",18);
        map.add("height",181);
        String s = restTemplate.postForObject(url, map, String.class);
        System.out.println(s);
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/692278.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

行业报告 | 智能教育发展蓝皮书(下)

原创 | 文 BFT机器人 核心观点 Core point 在教育数字化转型的背景下&#xff0c;积极探索智能技术助力教学减负增效的实践路径&#xff0c;对于深化教育教学改革&#xff0c;促进学生全面发展、健康成长具有重要现实意义。 03 智能技术助力教学设计 教学设计以解决实际的教学…

【半监督语义分割 2023 CVPR】CCVC

【半监督语义分割 2023 CVPR】CCVC 论文题目&#xff1a;Conflict-Based Cross-View Consistency for Semi-Supervised Semantic Segmentation 中文题目&#xff1a;半监督语义分割的基于冲突的交叉视图一致性 论文链接&#xff1a;https://arxiv.org/abs/2303.01276 论文代码&…

Visual Basic 6 25 周年

Visual Basic 6.0 是 Visual Basic“经典”的最后一个版本&#xff08;VB.NET 之前的版本&#xff09;。它是迄今为止 32 位 Windows 95/NT 及更高版本最流行的版本。它非常受欢迎&#xff0c;并且仍在许多公司中使用。它于 1998 年中发布&#xff0c;与 5.0 版本相比在多个方面…

mysql-数据迁移

文章目录 1. 物理迁移1. 迁移前&#xff0c;配置mysql的输出目录1. 查看mysql的输出目录2. 修改mysql的输出目录 2. 文件迁移 1. 物理迁移 1. 迁移前&#xff0c;配置mysql的输出目录 1. 查看mysql的输出目录 在安装MySQL的会限制了导入与导出的目录权限。只允许在规定的目录…

基于.net core的微信小程序接入微信支付系列之环境搭建(1)

前言&#xff1a;c#语言本身是一门非常优雅的语言&#xff0c;但是在腾讯的api文档里面并不受到待见&#xff0c;所以只能靠自己看文档来逐步摸索&#xff0c;微信支付的逻辑看起来很复杂&#xff0c;其主要原因在于腾讯写文档的人可能是学体育专业的&#xff0c;简单的逻辑非要…

android Q /R/S/T onTopResumedActivityChanged方法解析

疑问背景&#xff1a; 在Android Q高版本&#xff0c;发现经常通过events日志来看Activity生命周期的时候&#xff0c;经常看到如下打印&#xff1a; 06-27 12:02:07.091 4812 4812 I wm_on_top_resumed_gained_called: [227500858,com.android.launcher3.uioverrides.Quic…

【LeetCode】动态规划 刷题训练(五)

文章目录 剑指 Offer II 091. 粉刷房子题目解析状态转移方程完整代码 309. 最佳买卖股票时机含冷冻期题目解析状态转移方程持有股票保持卖出股票卖出股票冷冻期 完整代码 714. 买卖股票的最佳时机含手续费题目解析状态转移方程f[i]状态转移方程g[i]状态转移方程 完整代码 剑指 …

强化学习从基础到进阶-常见问题和面试必知必答[7]:深度确定性策略梯度DDPG算法、双延迟深度确定性策略梯度TD3算法详解

【强化学习原理项目专栏】必看系列&#xff1a;单智能体、多智能体算法原理项目实战、相关技巧&#xff08;调参、画图等、趣味项目实现、学术应用项目实现 专栏详细介绍&#xff1a;【强化学习原理项目专栏】必看系列&#xff1a;单智能体、多智能体算法原理项目实战、相关技巧…

最大收益(搜索好题)

题目描述 给一行n个数&#xff0c;每次可以取出行首或者行末的数&#xff0c;如果数ai是第j次取出的&#xff0c;可以得到ai*j的收益&#xff0c;求最大的总收益&#xff1b; 输入描述 Line 1: 整数 N&#xff08;1<N<2000&#xff09; Lines 2…N1: 第i个数的 a(i)&…

linux文件系统(目录)层次

本文主要内容来源和修改自 FHS 3.0 和 《鸟哥的私房菜基础学习篇&#xff08;第四版&#xff09;》 虽然 Linux 系统的发行版众多&#xff0c;但他们的目录配置却看起来都差不多&#xff0c;那是因为&#xff0c;大多数 Linux 发行版都遵循了文件系统层次结构标准&#xff08;…

centos7不能识别nvme固态硬盘,无法开机

前提是在机械硬盘已经安装过centos7系统了&#xff0c; 然后新增了一块nvme固态硬盘 其实原因也很简单&#xff0c; 旧版的centos7内核没有nvme驱动&#xff0c;需要更新内核&#xff0c;以下是我用ChatGPT解决的&#xff1a; 在 CentOS 7 中&#xff0c;NVMe 固态硬盘的驱动通…

vscode环境部署

编译cpp vscode安装2个插件&#xff0c;extension pack自动包了下面3个通过命令窗口code .打开代码目录&#xff0c;或者添加cl.exe路径到path&#xff0c;以及c需要的include和lib //在Path中添加cl.exe所在文件夹路径。若未找到&#xff0c;直接VS的安装目录下搜索cl.exe即…

下载好的eclipse的SSM项目导入IDEA配置运行过程(详细)

背景&#xff1a; 在网上下载一份SSM项目源码后&#xff0c;发现原项目是通过eclipse来开发的&#xff0c;但是个人喜欢使用IDEA来进行Java的开发&#xff0c;现在需要将这个SSM项目在IDEA上配置运行起来&#xff0c;下面就是记录一下整个配置过程&#xff01; 战胜 一、下载SS…

前端传递对象参数,以及后端接受参数 @PathVariable @RequestParam @RequestBody 注解的使用

太久没写前后端传递参数了,总是格式对不上号 前端传递对象参数,以及后端接受参数 一、接收参数注解 PathVariable二、接收参数注解 RequestParam2.1 get 请求,普通类型参数2.2 post 请求,普通类型参数 三、接收参数注解 RequestBodypost 请求,对象类型参数 总结 提示&#xff1…

Java之面向对象的思想

Java之面向对象的思想 一、如何理解面向对象二、面向对象和面向过程区别1. 面向过程1.1. 打开洗衣机盖子1.2. 把脏衣服放进洗衣机1.3. 加入适量的洗衣液1.4. 关上洗衣机盖子1.5. 选择洗衣的程序和时间1.6. 开始洗衣机1.7. 总结 2. 面向对象2.1. 属性&#xff1a;2.2. 方法&…

[C++] 刷题日记

785. 快速排序 #include <iostream> using namespace std;const int N 1e610;int n; int q[N];void quick_sort(int q[],int l,int r){if (l>r)return ;int x q[(lr)>>1],il-1,jr1;while (i<j){do i;while(q[i]<x);do --j;while(q[j]>x);if (i<j)sw…

【NLP】Attention机制和RNN

一、说明 循环神经网络是深度学习的主要内容之一,它允许神经网络处理文本、音频和视频等数据序列。它们可用于将序列简化为高级理解、注释序列,甚至从头开始生成新序列! 二、引进长记忆网络 基本的 RNN 设计很难处理较长的序列,但一种特殊的变体——“长短期记忆”网络 [1]…

three.js中的点对象(Point)和点材质(PointsMaterial)

一、点对象和点材质基本介绍 1. 点材质&#xff08;PointsMaterial&#xff09;&#xff1a; 点材质用于渲染点对象&#xff0c;它决定了点的颜色、透明度等属性。 常用属性有&#xff1a; color: 点的颜色&#xff0c;默认为白色。opacity: 点的透明度&#xff0c;默认为1…

List的去重操作

List的去重操作 1.采用Set集合的方式 List listnew ArrayList();for (int i 0; i < 10; i) {list.add(i);list.add(i);}//去重之前System.out.println(list);Set setnew LinkedHashSet(list);//方法1&#xff1a;去重之后System.out.println(new ArrayList<>(set));…

kubernetes核心概念 controller

kubernetes核心概念 Controller 一、pod控制器controller 1.1 Controller作用及分类 controller用于控制pod 参考: https://kubernetes.io/zh/docs/concepts/workloads/controllers/ 控制器主要分为: Deployments 部署无状态应用&#xff0c;控制pod升级,回退ReplicaSet 副…