首页 > 其他分享 >RestTemplate使用

RestTemplate使用

时间:2024-05-10 13:33:43浏览次数:15  
标签:PRE return restTemplate RestTemplate ResponseResult id 使用 public

1. 简单介绍

RestTemplateSpring 框架 中的一个工具类,它能让发送 HTTP 消息和处理响应变得简单。RestTemplate 类提供了许多功能,非常适合编写简单的 HTTP 客户端:

  • 支持所有标准 HTTP 方法(GET、POST 等)。
  • 能够处理所有标准 MIME Type(JSON、XML、表单等)。
  • 高级 API 允许我们使用 Java 代码进行配置,并避免复杂的序列化问题。
  • 可使用 ClientHttpRequestInitializerClientHttpRequestInterceptor 接口进行自定义。

从 Spring Framework 5 开始,除了 WebFlux,Spring 还引入了一个名为 WebClient 的新 HTTP 客户端。 WebClient 是一种替代 RestTemplate 的现代 HTTP 客户端。它不仅提供传统的同步 API,还支持高效的非阻塞和异步方法。

2. GET方法


getForEntity相比较于getForObject可以访问完整的 HTTP 响应。一般情况下我们使用getForObject即可。

@GetMapping("/{id}")
@Operation(summary = "根据ID查询订单信息")
public ResponseResult getOrderById(@PathVariable Integer id){
    return restTemplate.getForObject(PRE_SERVER + "/pay/" + id, ResponseResult.class, id);
}

第一个参数为要访问的URL,第二个参数为返回值的类型,第三个路径参数值

3. POST方法

@Operation(summary = "新增支付订单信息")
@PostMapping
public ResponseResult saveOrder(@RequestBody PayDTO payDTO){
    return restTemplate.postForObject(PRE_SERVER+"/pay",payDTO,ResponseResult.class);
}

第二个参数是我们通过Http访问方法的参数,第三个是返回值类型

4.PUT方法

@PutMapping
@Operation(summary = "更新订单信息")
public ResponseResult updateOrderById(@RequestBody PayDTO payDTO){
    restTemplate.put(PRE_SERVER + "/pay", payDTO);
    return ResponseResult.success();
}

第二个参数是我们要更新的数据

5.DELETE方法

@DeleteMapping("/{id}")
@Operation(summary = "删除订单信息")
public ResponseResult deleteOrderById(@PathVariable Integer id){
    restTemplate.delete(PRE_SERVER+"/pay/" +id);
    return ResponseResult.success();
}

路径变量也可以作为方法的第二个参数。

6.完整代码

@RestController
@RequestMapping("/consumer/pay")
@Tag(name = "订单模块", description = "订单相关接口")
public class ConsumerController {
    @Resource
    private RestTemplate restTemplate;

    private static final String PRE_SERVER = "http://localhost:8001";

    @Operation(summary = "新增支付订单信息")
    @PostMapping
    public ResponseResult saveOrder(@RequestBody PayDTO payDTO){
        return restTemplate.postForObject(PRE_SERVER+"/pay",payDTO,ResponseResult.class);
    }

    @GetMapping("/{id}")
    @Operation(summary = "根据ID查询订单信息")
    public ResponseResult getOrderById(@PathVariable Integer id){
        return restTemplate.getForObject(PRE_SERVER + "/pay/" + id, ResponseResult.class, id);
    }

    @DeleteMapping("/{id}")
    @Operation(summary = "删除订单信息")
    public ResponseResult deleteOrderById(@PathVariable Integer id){
        restTemplate.delete(PRE_SERVER+"/pay/" +id);
        return ResponseResult.success();
    }
    @PutMapping
    @Operation(summary = "更新订单信息")
    public ResponseResult updateOrderById(@RequestBody PayDTO payDTO){
        restTemplate.put(PRE_SERVER + "/pay", payDTO);
        return ResponseResult.success();
    }
}

需要增加配置类:

@Configuration
public class RestConfig {

    @Bean
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }
}

标签:PRE,return,restTemplate,RestTemplate,ResponseResult,id,使用,public
From: https://www.cnblogs.com/wyzstudy/p/18184112

相关文章

  • 使用spring.cloud.stream来发送kafka消息,并根据某字段将消息发送到固定partition上
    1、问题:在进行功能开发的时候遇到一个需求,具体需求如下:在某个服务A中接收到消息,对消息体进行校验,判断消息体中的数据是否需要产生告警,若产生告警,则将告警信息发送到kafka中,由另一个服务B接收到消息并记录到mongo中;当A服务在此接收到消息,发现以前的某个告警已经恢复,则再......
  • sqlserver01(使用篇从新建数据库开始)
    先说一下我们要完成的如下(我放在代码块里了1.在“对象资源管理器”中右击“数据库”,在“新建数据库”对话框中输入数据库名称stumanage,设置数据库文件初始大小为5M,限制文件增长50M,日志文件初始大小设为2M,限制文件增长5M,并更改文件存储路径。2、单击“新建查询”按钮,在S......
  • 使用Python进行数据分析的基本步骤和技巧
    ......
  • 更优雅的使用Gson解析Json
     Gson背靠Google这棵大树,拥有广泛的社区支持和相对丰富的文档资源,同时因其简单直观的API,一直以来基本稳坐Android开发序列化的头把交椅(直到Google宣布kotlin成为Android开发的首选语言)。本文对Gson的使用及主要流程做下分析。Gson的基本使用Gson依赖 kotlin复制代码d......
  • linux top命令的使用
    一、概念Linux系统中,Top命令主要用于实时运行系统的监控,包括Linux内核管理的进程或者线程的资源占用情况。这个命令对所有正在运行的进程和系统负荷提供不断更新的概览信息,包括系统负载、CPU利用分布情况、内存使用、每个进程的内容使用情况等信息。二、语法op[-][d......
  • react项目中使用lottie动画
    一,引入lottie库点击查看代码npmi--savereact-lottie@types/react-lottie二,下载lottie的json文件去iconfont.cn中可以在库中下载lottie文件(注意版权问题)三,在项目中使用lottie点击查看代码import*asReactfrom"react";importLottiefrom"react-lottie";impo......
  • Vue的step步骤条的使用
    效果如下:代码:1、父组件<template><el-containerclass="container"><el-steps:active="active"finish-status="success"simplestyle="margin-top:20px;background-color:white;height:30px;width:34%"&g......
  • SpringBoot+使用过滤器链执行风控决策
    风控流程下单前进行风控校验//1.begin---风控处理---前置处理{黑白名单校验}RiskControlRuleEnumcontrolRuleEnum=riskControlHandlerService.preHandle(mappingObj.getMerchantGoodsType(),thatUser);if(controlRuleEnum!=null){log......
  • react中使用craco,针对路径转换,修改webpack别名路径配置
    1.0首先下载craco依赖包npminstall@craco/craco-D2.0在项目根目录下面新建craco.config.js文件,里面内容配置为constpath=require('path')module.exports={webpack:{alias:{'@':path.resolve(__dirname,'src')}......
  • 3-使用
    3.使用连接ssh连接配置客户端免密登陆git仓库,使用gitclone/pushhttp连接不太常用本地与远程的交互没有最新代码,从头开始[email protected]'testcommit'test.txtgitpushoriginmaster有新代码,希望替换掉远程服务器上的代码......