Feign调用的GET参数传递的解决方式 您所在的位置:网站首页 get接口传参个数很多 Feign调用的GET参数传递的解决方式

Feign调用的GET参数传递的解决方式

2024-06-18 21:51| 来源: 网络整理| 查看: 265

需求:

​ 在消费方服务通过GET方式,访问服务提供方的接口,需要传递多参数,拆分成多个参数的方式访问,不太适合用在该场景,需要改造成合适的方式调用服务方的接口

思考:

​   拆分成多个参数时,若GET请求的参数超过3个及以上时,便不适用该种方式请求服务,因为这样传递参数过于臃肿,可读性也比较差;

​   若改造成POST请求的方式,虽然解决参数过多的问题,但是也带来了其他的开销,参数被放到了body里面,然后请求到服务方提供的接口,服务方的接口也改造成了POST方式,改变了原来的GET方式调用的初衷,不太友好;

​ 可以在消费方调用Feign接口时,参数封装到body中,在组装Feign接口请求时,将body里面的参数取出来,转换为GET方式请求的参数,请求body的参数,然后发起请求,实现了GET方式访问服务方提供的接口;

以下是这三种调用方式的具体实现,可以根据适合自己的业务场景去使用,选择不同的方式请求调用:

GET方式请求①:

请求DTO对象:

package com.springcloud.pojo; import java.util.Date; public class Requets01DTO { private Date startTime; private Date endTime; private String message; @Override public String toString() { return "Requets01DTO{" + "startTime=" + startTime + ", endTime=" + endTime + ", message='" + message + '\'' + '}'; } public Date getStartTime() { return startTime; } public void setStartTime(Date startTime) { this.startTime = startTime; } public Date getEndTime() { return endTime; } public void setEndTime(Date endTime) { this.endTime = endTime; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } }

消费方的请求:

@Autowired GetClient01 getClient01; @GetMapping("/request/get/01") public String requestGetOne(Requets01DTO requets01DTO) { return getClient01.queryDataByGetRequest(requets01DTO.getStartTime(), requets01DTO.getEndTime(), requets01DTO.getMessage()); }



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有