返回顶部
首页 > 资讯 > 后端开发 > Python >SpringCloudFeign多参数传递及需要注意的问题
  • 842
分享到

SpringCloudFeign多参数传递及需要注意的问题

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

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

摘要

目录Feign多参数传递及注意的问题在服务提供者cloud-shop-userservice中新增几个方法修改feign的UserService,新增对应的方法在feign的cont

Feign多参数传递及注意的问题

这边沿用前面的Eureka,Feign,Service

在服务提供者cloud-shop-userservice中新增几个方法


	@PostMapping("/user")
	public String aveUser(@RequestBody User user) {
		logger.info("保存用户 :" +user.toString());
		return "Success";
	}
	
	
	@GetMapping("/findUser")
	public User findUserByNameAndPassword(String name ,String passWord) {
		logger.info("name :"+name +"---password :" +password);
		User user= new User();
		user.setName(name);
		user.setPassword(password);
		return user;
	}

修改feign的UserService,新增对应的方法

package cn.sh.daniel.service; 
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.WEB.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import cn.sh.daniel.entity.User;
 
@FeignClient(value = "cloud-shop-userservice")
public interface UserService {
	
	@GetMapping("/user/{id}")
	public User findUserById(@PathVariable("id")Long id);
	
	@PostMapping("/user/user")
	public String aveUser(@RequestBody User user) ;
	
	@GetMapping("/user/findUser")
	public User findUserByNameAndPassword(String name ,String password);
}

在feign的controller中调用方法

	
	@PostMapping("/user")
	public String aveUser(@RequestBody User user) {
		return userService.aveUser(user);
	}
	
	
	@GetMapping("/findUser")
	public User findUserByNameAndPassword(String name ,String password) {
		return userService.findUserByNameAndPassword(name, password);
	}

重启修改过的服务,查看服务注册是否正常

在启动过程中可以发现Feign服务启动报错:

为什么会报错呢?

这个方法有两个参数,而Feign去映射的时候它不会去自动给你区分那个参数是哪个,会直接给你报错

解决方法:添加注解,自己去指定要映射的属性

重新启动Feign服务:

启动成功!!!!

使用工具调用这几个方法进行测试

成功调用两个方法!!!!

Feign如何接收多个参数

feigin多个参数POST情况下

method(String str1,String str2,String str3);
method2(String str1,@RequestParam Map<String, Object> map,String str3);

1.API

package com.hwasee.hsc.api.Redis;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.Map;

public interface RedisMapAPI {
    //===============================Map===============================
    @PostMapping("/redis/map/get")
    String getMap(@RequestParam(value = "key") String key, @RequestParam(value = "item") String item);
    @PostMapping("/redis/map/getAll")
    Map<Object, Object> getAllMap(@RequestParam(value = "key") String key);
    @PostMapping("/redis/map/set")
    Boolean setMap(@RequestParam(value = "key") String key, @RequestParam Map<String, Object> map);
    @PostMapping("/redis/map/setMapAndTime")
    Boolean setMapAndTime(@RequestParam(value = "key") String key, @RequestParam Map<String, Object> map, @RequestParam(value = "time") Long time);
    @PostMapping("/redis/map/setMapItem")
    Boolean setMapItem(@RequestParam(value = "key") String key, @RequestParam(value = "item") String item, @RequestParam(value = "value") String value);
    @PostMapping("/redis/map/setMapItemAndTime")
    Boolean setMapItemAndTime(@RequestParam(value = "key") String key, @RequestParam(value = "item") String item, @RequestParam(value = "value") String value, @RequestParam(value = "time") Long time);
    @PostMapping("/redis/map/del")
    void delMap(@RequestParam(value = "key") String key, @RequestParam(value = "items") Object[] items);
    @PostMapping("/redis/map/hashKey")
    Boolean mhashKey(@RequestParam(value = "key") String key, @RequestParam(value = "item") String item);
    @PostMapping("/redis/map/incr")
    Double incrMap(@RequestParam(value = "key") String key, @RequestParam(value = "item") String item, @RequestParam(value = "delta") Double delta);
    @PostMapping("/redis/map/decr")
    Double decrMap(@RequestParam(value = "key") String key, @RequestParam(value = "item") String item, @RequestParam(value = "delta") Double delta);
}

2.Feign

package com.hwasee.hsc.feign.redis;
import com.hwasee.hsc.api.redis.RedisMapAPI;
import com.hwasee.hsc.constants.ServiceConstants;
import org.springframework.cloud.openfeign.FeignClient;

@FeignClient(name = ServiceConstants.Services.SERVICE_REDIS)
public interface RedisMapFeign extends RedisMapAPI {
}

3.controller

如果实现了API就不用添加,没有实现就要添加

package com.hwasee.hsc.redis.controller;
import com.hwasee.hsc.redis.util.RedisUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
import java.util.Set;

@RestController
@RequestMapping("/redis")
public class RedisController {
    @Autowired
    private RedisUtil redisUtil;
    @Autowired
    private RedisUtil.redisMap redisMap;
    @Autowired
    private RedisUtil.redisString redisString;
    @Autowired
    private RedisUtil.redisSet redisSet;
    @Autowired
    private RedisUtil.redisList redisList;
    //===============================Common===============================
    @PostMapping("/changeDatabase")
    public void changeDatabase(Integer index){
        redisUtil.changeDatabase(index);
    }
    
    @PostMapping("/expire")
    public Boolean expire(String key, Long time) {
        return redisUtil.expire(key, time);
    }
    
    @PostMapping("/getExpire")
    public Long getExpire(String key) {
        return redisUtil.getExpire(key);
    }
    
    @PostMapping("/hasKey")
    public Boolean hasKey(String key) {
        return redisUtil.hasKey(key);
    }
    
    @SuppressWarnings("unchecked")
    @PostMapping("/del")
    public void del(@RequestParam String[] keys) {
        redisUtil.del(keys);
    }
    //===============================String===============================
    
    @PostMapping("/string/get")
    public String getString(String key) {
        return redisString.get(key).toString();
    }
    
    @PostMapping("/string/set")
    public Boolean setString(String key, String value) {
        return redisString.set(key, value);
    }
    
    @PostMapping("/string/setValueAndTime")
    public Boolean setValueAndTime(String key, String value, Long time) {
        return redisString.set(key, value, time);
    }
    
    @PostMapping("/string/incr")
    public Long incrString(String key, Long delta) {
        return redisString.incr(key, delta);
    }
    
    @PostMapping("/string/decr")
    public Long decrString(String key, Long delta) {
        return redisString.decr(key, delta);
    }
    //===============================Map===============================
    
    @PostMapping("/map/get")
    public String getMap(String key, String item) {
        return redisMap.get(key, item);
    }
    
    @PostMapping("/map/getAll")
    public Map<Object, Object> getAllMap(String key) {
        return redisMap.getAll(key);
    }
    
    @PostMapping("/map/set")
    public Boolean setMap(String key, @RequestParam Map<String, Object> map) {
        return redisMap.set(key, map);
    }
    
    @PostMapping("/map/setMapAndTime")
    public Boolean setMapAndTime(@RequestParam String key,@RequestParam Map<String, Object> map,@RequestParam Long time) {
        return redisMap.set(key, map, time);
    }
    
    @PostMapping("/map/setMapItem")
    public Boolean setMapItem(String key, String item, String value) {
        return redisMap.set(key, item, value);
    }
    
    @PostMapping("/map/setMapItemAndTime")
    public Boolean setMapItemAndTime(String key, String item, String value, Long time) {
        return redisMap.set(key, item,value, time);
    }
    
    @PostMapping("/map/del")
    public void delMap(String key,@RequestParam Object[] items) {
        redisMap.del(key, items);
    }
    
    @PostMapping("/map/hashKey")
    public Boolean mhashKey(String key, String item) {
        return redisMap.hasKey(key, item);
    }
    
    @PostMapping("/map/incr")
    public Double incrMap(String key, String item, Double delta) {
        return redisMap.incr(key, item, delta);
    }
    
    @PostMapping("/map/decr")
    public Double decrMap(String key, String item, Double delta) {
        return redisMap.decr(key, item, delta);
    }
    //===============================Set===============================
    
    @PostMapping("/set/get")
    public Set<Object> getSet(String key) {
        return redisSet.get(key);
    }
    
    @PostMapping("/set/setValue")
    public Long setValue(String key,@RequestParam Object[] values) {
        return redisSet.set(key, values);
    }
    
    @PostMapping("/set/hashKey")
    public Boolean hashKey(String key, String value) {
        return redisSet.hasKey(key, value);
    }
    
    @PostMapping("/set/setValueAndTime")
    public Long setValueAndTime(String key, Long time,@RequestParam Object[] values) {
        return redisSet.set(key, time, values);
    }
    
    @PostMapping("/set/getSize")
    public Long getSize(String key) {
        return redisSet.getSize(key);
    }
    
    @PostMapping("/set/remove")
    public Long remove(String key,@RequestParam Object[] values) {
        return redisSet.remove(key, values);
    }
    //===============================List===============================
    
    @PostMapping("/list/get")
    public List<Object> get(String key, Long start, Long end) {
        return redisList.get(key, start, end);
    }
    
    @PostMapping("/list/getSize")
    public Long getListSize(String key) {
        return redisList.getSize(key);
    }
    
    @PostMapping("/list/getByIndex")
    public Object getByIndex(@RequestParam("key") String key, @RequestParam("index") Long index) {
        return redisList.getByIndex(key, index);
    }
    
    @PostMapping("/list/setValue")
    public Boolean setValue(String key, Object value) {
        return redisList.set(key, value);
    }
    
    @PostMapping("/list/setValueAndTime")
    public Boolean setValueAndTime(String key, Object value, Long time) {
        return redisList.set(key, value, time);
    }
    
    @PostMapping("/list/setList")
    public Boolean setList(String key, List<Object> value) {
        return redisList.set(key, value);
    }
    
    @PostMapping("/list/setListAndTime")
    public Boolean setListAndTime(String key, List<Object> value, Long time) {
        return redisList.set(key, value, time);
    }
    
    @PostMapping("/list/updateByIndex")
    public Boolean updateByIndex(String key, Long index, Object value) {
        return redisList.updateIndex(key, index, value);
    }
    
    @PostMapping("/list/remove")
    public Long remove(String key, Long count, Object value) {
        return redisList.remove(key, count, value);
    }
}

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

--结束END--

本文标题: SpringCloudFeign多参数传递及需要注意的问题

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

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

猜你喜欢
  • SpringCloudFeign多参数传递及需要注意的问题
    目录Feign多参数传递及注意的问题在服务提供者cloud-shop-userservice中新增几个方法修改feign的UserService,新增对应的方法在feign的cont...
    99+
    2024-04-02
  • SpringCloud Feign多参数传递的方法及需要注意哪些问题
    本文小编为大家详细介绍“SpringCloud Feign多参数传递的方法及需要注意哪些问题”,内容详细,步骤清晰,细节处理妥当,希望这篇“SpringCloud Feign多参数传递的方法及需要注意哪些问题”文章能帮助...
    99+
    2023-06-29
  • js iframe参数传递要注意哪些问题
    在使用iframe进行参数传递时,需要注意以下几个问题:1. 跨域安全问题:如果父页面和子页面不是同源的,即域名、协议、端口号不一致...
    99+
    2023-09-17
    js
  • C++指针作为函数的参数进行传递时需要注意的一些问题
    只有在被调函数中,对指针进行引用操作,才可以达到不需要返回值,就对指针指向的变量做出相应的变化。 下面分析这样两个例子; 要求:定义并初始化两个字符串变量,并执行输出操作;然后调用函...
    99+
    2022-11-15
    指针 函数参数
  • Golang函数参数传递方式及注意事项
    摘要go 语言中,函数参数传递方式有值传递和引用传递。值传递副本,不会影响原始值;引用传递引用,修改引用会影响原始值。注意事项包括性能、并发和可读性。在哈希表实现中,引用传递用于在不复制...
    99+
    2024-04-16
    golang 函数参数 键值对
  • Oracle中数据绑定和参数传递要注意什么
    在Oracle中,数据绑定和参数传递是非常重要的操作,要注意以下几点: 数据绑定是在SQL语句中使用变量来替代固定的数值或字符串...
    99+
    2024-04-09
    Oracle
  • Go语言函数参数传递的方式及注意事项
    Go语言是一种由谷歌开发的开源编程语言,以其性能优异和简洁易读的特点而备受开发者青睐。在Go语言中,函数参数的传递方式对于编写高效、可维护的代码至关重要。本文将探讨Go语言中函数参数传...
    99+
    2024-04-02
  • 闪回点需要注意的问题
    sys@newtestCDB> select * from v$recovery_file_dest; NAME SPACE_LIMIT SPACE_USED SPACE_RECLAIMAB...
    99+
    2024-04-02
  • Python中的函数参数传递问题
    目录一、前言二、了解形式参数和实际参数1.通过作用理解2.通过比喻来理解形参和实参三、位置参数1.数量必须与定义时一致2.位置必须与定义时一致四、关键字参数五、为参数设置默认值六、可...
    99+
    2023-01-04
    Python函数参数传递 Python函数 Python参数传递
  • spring中@value注解需要注意的问题
    首先,@value需要参数,这里参数可以是两种形式:@Value("#{configProperties['t1.msgname']}")或者@Value("${t1.msgname}");其次,下面我们来看看如何使用这两形式,在配置上有什...
    99+
    2023-05-31
    spring 注解 ue
  • 创建ADO.NET参数要注意哪些问题
    这篇文章主要讲解了“创建ADO.NET参数要注意哪些问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“创建ADO.NET参数要注意哪些问题”吧!网站中的图片可以保存到文件系统中,即专门的目录...
    99+
    2023-06-17
  • mybatis的association传递参数问题示例
    单个参数直接传即可,多参数传递如下 <resultMap id="stationVo" type="com.gt.dev.domain.vo.DevStationVO" ext...
    99+
    2022-12-14
    mybatis的association传递参数 mybatis association参数
  • 聊聊React onClick 传递参数的问题
     背景说明 在下图这样的列表中,点击删除按钮需要执行删除操作  列表产生: { title: '操作', dataIndex: 'rowguid'...
    99+
    2024-04-02
  • Mysql表设计需要注意的问题
    下面探讨的数据库为MySQL 存储引擎为innodb因为这是最常见的,使用最多的数据库和引擎 什么是页分裂? 这是因为聚簇索引采用的是平衡二叉树算法,而且每个节点都保存了该主键所对应行的数据,假设插入数据的主键是自增长的,那么根据二叉树算...
    99+
    2015-04-28
    Mysql表设计需要注意的问题
  • PostgreSQL有哪些需要注意的问题
    这篇文章主要讲解了“PostgreSQL有哪些需要注意的问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PostgreSQL有哪些需要注意的问题”吧!1:...
    99+
    2024-04-02
  • Java需要注意的问题有哪些
    这篇文章主要介绍了Java需要注意的问题有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Top 1:"abc"=="abc"返回的...
    99+
    2023-06-17
  • 数据采集时需要注意哪些问题
    本篇文章给大家分享的是有关数据采集时需要注意哪些问题,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1、线下调研紧紧围绕研究主题和目的。题目易读,易理解,一般。充分考虑被调人的特...
    99+
    2023-06-14
  • 多ip服务器选择需要注意哪些问题
    多ip服务器选择需要注意的问题有:1、注意多ip服务器的安全性,选择安全性高的服务器;2、注意多ip服务器的稳定性、速度和售后问题,选择时对服务器稳定性和速度进行测试,选择提供免费试用的服务商;3、注意多ip服务器的IP资源,选择IP资源丰...
    99+
    2024-04-02
  • 多ip服务器选择需要注意什么问题
    在选择多IP服务器时,需要注意以下问题: 可靠性:选择一个可靠的多IP服务器,确保服务器能够持续稳定运行,并提供高质量的服务。 ...
    99+
    2024-04-23
    服务器
  • PHP函数的参数传递方式和注意事项
    PHP作为一种十分常用的后端代码语言,其函数的参数传递方式也是开发过程中需要注意的一部分。本文将探讨PHP函数的参数传递方式及其注意事项。PHP函数的参数传递方式在PHP中,函数的参数传递方式主要有三种:值传递、引用传递和默认值传递。下面分...
    99+
    2023-05-18
    注意事项 PHP函数 参数传递方式
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作