返回顶部
首页 > 资讯 > 后端开发 > Python >feign实现传递参数的三种方式小结
  • 543
分享到

feign实现传递参数的三种方式小结

2024-04-02 19:04:59 543人浏览 泡泡鱼

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

摘要

需要注意的一点是,feign好像是无法传递list集合类型的,但是你可以通过传递对象类型,然后在接收方再次将对象装在集合中达到集合传递的效果 传递方式一:传递的都是基本数据类型 re

需要注意的一点是,feign好像是无法传递list集合类型的,但是你可以通过传递对象类型,然后在接收方再次将对象装在集合中达到集合传递的效果

传递方式一:传递的都是基本数据类型

restful风格参数,用@PathVariable写着走就行了

传递方式二:传递数组类型的参数

不使用restful风格,直接用@RequestParam声明参数之间的对应关系。

传递方式三:传递带有对象的参数

1.使用restful风格的参数要用@Pathvarible声明参数对应关系,@Pathvariable用于非字符串参数。

2.不适用restful风格的字符串参数用@Requestparam,

3.对象必须用@RequestBody注解声明

特别小知识:

默认情况下,Feign会将标有@RequestParam注解的参数转换成字符串添加到URL中,将没有注解的参数通过Jackson转换成JSON放到请求体中。

注意,如果在@RequetMapping中的method将请求方式指定为POST,那么所有未标注解的参数将会被忽略

spring cloud feign传参注意

最近在用SpringCloud尝试重构以前的项目,使用Feign客户端组件来调用微服务,经常出现参数传不过去变成null的问题,网上查了一下发现feign在参数上的使用还是有一定的限制的,主要是要注意:

  1. 当参数比较复杂时,feign即使声明为get请求也会强行使用post请求
  2. 不支持@GetMapping类似注解声明请求,需使用@RequestMapping(value = “url”,method = RequestMethod.GET)
  3. 使用@RequestParam注解时必须要在后面加上参数名

写了一个简单案例,同时传输一个对象和一个字符串作为请求参数,主要关注参数的声明,其余比如eureka和feign的依赖和配置和后续使用相关的知识请另行查阅。仅供参考:

服务端(生产者)

准备:

  1. 已经配置将服务注册在eureka,服务名为“item-service”
  2. service层和dao层已经实现好了

逻辑:ItemController接收参数,调用service层,service中为商品Item对象添加详情desc,然后调用dao保存Item对象,返回Result结果封装对象


@RestController
public class ItemController {
@Autowired
private ItemService itemService;

@RequestMapping("/item/save")
public Result addItem(@RequestBody Item item, @RequestParam("desc") String desc){
    return itemService.addItem(item, desc);
}
}

客户端(消费者)

准备:已经配置注册到eureka

逻辑:

声明ItemFeignClient调用eureka上名为"item-service"的服务,返回Result对象

使用Post请求,传递两个参数:

TbItem对象,使用@RequestBody来声明

String字符串,使用@RequestParam(“xxx”)来声明


@FeignClient("item-service")
public interface ItemFeignClient {
 
    
    @RequestMapping(value = "/item/save",method = RequestMethod.POST)
    Result addItem(@RequestBody TbItem item, @RequestParam("desc") String desc); 
 

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

--结束END--

本文标题: feign实现传递参数的三种方式小结

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

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

猜你喜欢
  • feign实现传递参数的三种方式小结
    需要注意的一点是,feign好像是无法传递list集合类型的,但是你可以通过传递对象类型,然后在接收方再次将对象装在集合中达到集合传递的效果 传递方式一:传递的都是基本数据类型 re...
    99+
    2024-04-02
  • Feign调用中的两种Header传参方式小结
    目录Feign调用中的两种Header传参方式在请求拦截器中统一配置通过@RequestHeader注解调用feign接口时,如何往header中添加参数总结Feign调用中的两种H...
    99+
    2023-01-01
    Feign调用传参 两种Header传参 Feign传参
  • SpringMVC 接收前端传递的参数四种方式小结
    目录SpringMVC 接收前端传递的参数四种方式@RequestParam 获取注解@PathVariable获取注解SpringMVC,可以不设置任何注解即可接收参数Spring...
    99+
    2024-04-02
  • 利用Python脚本实现传递参数的三种方式分享
    目录一、使用sys.argv的数组传入二、使用argparse包传入三、使用shell脚本的方式向python脚本传递参数背景:使用python脚本传递参数在实际工作过程中还是比较常...
    99+
    2022-12-08
    Python脚本传递参数 Python 传递参数
  • Spring MVC传递接收参数方式小结
    目录一、通过实体Bean接收请求参数二、通过处理方法的形参接收请求参数三、通过HttpServletRequest接收请求参数四、通过@PathVariable接收URL中的请求参数...
    99+
    2024-04-02
  • Vue路由传参props解耦的三种方式小结
    目录路由组件传参布尔模式对象模式函数模式总结路由组件传参 在组件中使用 $route 会使之与其对应路由形成高度耦合,从而使组件只能在某些特定的 URL 上使用,限制了其灵活性。 使...
    99+
    2022-12-08
    Vue路由传参 Vue props解耦 props解耦方式
  • React传递参数的几种方式
    目录父子组件之间传递参数路由传参 状态提升context引入redux父子组件之间传递参数 父组件往子组件传值,直接用this.props就可以实现 在父组件中,给需要传递...
    99+
    2024-04-02
  • SpringCloud通过Feign传递List类型参数方式
    目录通过Feign传递List类型参数1、单个List实体传递2、基本类型传递3、实体类型传递Feign在参数为List时的坑错误写法正确写法通过Feign传递List类型参数 首先...
    99+
    2024-04-02
  • Go中数组传参的几种方式小结
    初学Golang,数组传参问题就是把我整不会了,以前我们使用c语言进行数组传参时是这样传递的,直接传递数组的起始地址即可。 而在go中数组传参我们以以下两种方式进行传递,这里我直接...
    99+
    2023-03-08
    Go 数组传参
  • JMeter参数化4种实现方式(小结)
    目录1 参数化释义2 参数化实现2.1 CSV Data Set ConfigCSV简介CSV实例注意事项2.2 User Parameters2.3 用户定义的变量2.4 Rand...
    99+
    2024-04-02
  • 小程序跨页面传递参数的几种方式
    当我们在开发小程序时,经常会遇到需要在不同页面之间传递数据的情况。为了实现页面间的数据传递,小程序提供了多种方法。下面将介绍几种常用的传递数据的方法。 URL参数传递:这是一种简单直接的传递数据的方式。在跳转页面时,可以在URL中添加参数来...
    99+
    2023-10-26
    小程序
  • python函数的四种参数传递方式
    python中函数传递参数有四种形式 fun1(a,b,c) fun2(a=1,b=2,c=3) fun3(*args) fun4(**kargs) 四种中最常见是前两种,基本上一般点的教程都会涉及,后两种一般...
    99+
    2023-01-30
    四种 函数 参数
  • java 引用传递的三种类型小结
    目录java引用传递的三种类型第一种第二种传递方式第三种传递方式对于三种引用传递的理解java引用传值问题问题起源,一个蠢到家的是失败案例两类参数传递基本数据类型引用数据类型引用传递...
    99+
    2024-04-02
  • C#多态的三种实现方式(小结)
    C#实现多态主要有3种方法,虚方法,抽象类,接口 1 虚方法 在父类的方法前面加关键字virtual, 子类重写该方法时在方法名前面加上override关键字,例如下面的Perso...
    99+
    2024-04-02
  • 分享Pytestfixture参数传递的几种方式
    目录1.背景2.fixture中参数传递的几种方式1)fixture中的函数返回2)与@pytest.mark.parametrize的结合3)fixture中的方法嵌套传递4)测试...
    99+
    2024-04-02
  • PHP页面之间传递参数的三种方法
    php变量传递是非常常见的,比如一个简单的登录模块,首先需要创建登录表单,然后需要将登录表单页面的用户名和密码传递到登录处理页面进行判断用户名和密码是否正确,如果正确则进行登录成功的相关操作,如果错误就提示给用户账号密码有误。 以上所说的登...
    99+
    2023-09-09
    php
  • pytest用例间参数传递的两种实现方式示例
    目录前言一、通过conftest创建全局变量二、使用tmpdir_factory方法总结前言 我们在做接口自动化测试的时候,会经常遇到这种场景:接口A的返回结果中的某个字段,是接口B...
    99+
    2024-04-02
  • Vue中常见的几种传参方式小结
    目录前言父子组件之间传参兄弟组件之间传参provide/inject传参总结前言 Vue组件传参方也是面试最常考的内容,犹记得当初刚出来实习的时候,遇到一个需求,大概就是一个tabs...
    99+
    2023-05-19
    vue传参方式有哪些 vue传参方法 vue传参
  • Node.js中参数传递的两种方式详解
    目录参数传递方式GET方式POST方式动态网页参数传递方式 在Node.js中,参数传递常见的共两种方式: GET方式:通过地址栏键=值的方式进行传递。POST方式:通过表单的方式传...
    99+
    2024-04-02
  • pytest用例间参数传递的两种实现方式是怎样的
    pytest用例间参数传递的两种实现方式是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。前言我们在做接口自动化测试的时候,会经常遇到这种场景:接口A的返回结果中的某个字段...
    99+
    2023-06-22
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作