前言

最近做微服务架构的项目,在用feign来进行服务间的调用。在互调的过程中,难免出现问题,根据错误总结了一下,主要是请求方式的错误和接参数的错误造成的。在此进行一下总结记录。以下通过分为三种情况说明,无参数,单参数,多参数。每种情况再分get和post两种请求方式进行说明。这样的话,6种情况涵盖了feign调用的所有情况。

有个建议就是为了保证不必要的麻烦,在写feign接口的时候,与我们的映射方法保持绝对一致,同时请求方式,请求参数注解也都不偷懒的写上。如果遵循这种规范,可以避开90%的调用错误。

无参情况

无参情况就是说我们的方法内不接收参数。

Get请求

当我们只写RequestMapping,而不指定RequestMethod的时候。默认的method为一个get请求。

@RequestMapping("/noArgs/getDemo")

public void noArgsGetDemo();

Post请求

@RequestMapping(value = "/noArgs/postDemo",method = RequestMethod.POST)

public void noArgsPostDemo();

也可以直接使用PostMapping

@PostMapping(value = "/noArgs/postDemo")

public void noArgsPostDemo();

单个参数的情况

方法内只有一个参数

Get请求

get请求方式接参,只能使用RequestParam注解

@RequestMapping(value = "/singleArg/getDemo")

public void singleArgGetDemo(@RequestParam String name);

不写RequestMethod注解,默认就是get请求。

Post请求

post请求方式接参,可以使用三种方式,一种是不写,一种是RequestParam,一种是RequestBody。

RequestParam

先说说RequestParam这种方式。需要指明method,如果不指明则和上方一样了。默认是get。

@RequestMapping(value = "/singleArg/PostDemo",method = RequestMethod.POST)

public void singleArgPostDemo(@RequestParam String name);

RequestBody

一旦使用RequestBody这种方式,他就是post请求,不用写method了。

@RequestMapping(value = "/singleArg/PostDemo")

public void singleArgPostDemo(@RequestBody String name);

这个注解就很强势了,你写post,不写或者写get都没用,不会生效的,只要有这个方式那他就是Post请求了。

啥也不写

@RequestMapping(value = "/singleArg/PostDemo")

public void singleArgPostDemo(String name);

此时默认会在参数前加上RequestBody注解。然后就会变成Post请求。

多参

get请求

多个参数也是使用@RequestParam注解。

@RequestMapping(value = "/moreArgs/getDemo")

public void moreArgGetDemo(@RequestParam String name,@RequestParam String sex);

使用了RequestParam注解,默认method就是get。

post请求

多个参数只能有一个是requestBody方式,其他应该使用requestParam方式。

@RequestMapping(value = "/moreArgs/postDemo")

public void moreArgPostDemo(@RequestBody String name,@RequestParam String sex);

也可以全部使用RequestParam方式,但是要指定post。

@RequestMapping(value = "/moreArgs/postDemo",method = RequestMethod.POST)

public void moreArgPostDemo(@RequestParam String name,@RequestParam String sex);

如果要是参数前,都没写注解,则会报错,因为会默认加上两个RequestBody。

总结

至此feign的请求方式就说明白了。

feign调用多个服务_SpringCloud中Feign服务调用请求方式及参数总结(示例代码)相关推荐

  1. LIBSVM在MATLAB中的使用及SVM最优参数选取示例代码

    1. 参考网站: LIBSVM 库下载:http://www.csie.ntu.edu.tw/~cjlin/libsvm/ https://www.csie.ntu.edu.tw/~cjlin/lib ...

  2. 如何实现微服务架构中的服务发现

    为什么使用服务发现? 想象一下,如果你在写代码调用一个有REST API或Thrift API的服务,你的代码需要知道一个服务实例的网络地址(IP地址和端口).运行在物理硬件上的传统应用中,服务实例的 ...

  3. 如何实现微服务架构中的服务发现?

    转载出处:​如何实现微服务架构中的服务发现?  原文地址:Service Discovery in a Microservices Architecture 编者按:在『应用架构一团糟?如何将单体应用 ...

  4. python的命名空间_python中命名空间的三种方式介绍(附示例)

    本篇文章给大家带来的内容是关于python中命名空间的三种方式介绍(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. python中的命名空间分三种: 内置的命名空间,在启动解 ...

  5. JSP中get和post请求方式的区别及乱码解决方法

    JSP中get和post请求方式的区别及乱码解决方法 get提交方式:默认method="get" 和 地址栏.超链接请求方式默认都属于get提交方式 form表单的method属 ...

  6. SpringCloud中Feign服务调用请求方式及参数总结

    前言 最近做微服务架构的项目,在用feign来进行服务间的调用.在互调的过程中,难免出现问题,根据错误总结了一下,主要是请求方式的错误和接参数的错误造成的.在此进行一下总结记录.以下通过分为三种情况说 ...

  7. feign调用多个服务_SpringCloud使用Feign实现服务调用|chu

    Spring Cloud Feign简介 Spring Cloud Feign也是一个基础工具类,它整合了Spring Cloud Ribbon和Spring Cloud Hystrix,除了提供这两 ...

  8. java时间提醒微服务器_springcloud中微服务的优雅停机(已验证)

    大部分项目部署中,为了方便,可能都直接使用kill -9 服务的pid来停掉服务. 但是由于Eureka采用心跳的机制来上下线服务,会导致服务消费者调用此已经kill的服务提供者然后出错. 可以采用以 ...

  9. 微服务设计中关于服务组合和可视化编排的思考

    这篇文章重新整理下我对服务组合和服务可视化编排的一些思考. 从整个服务分层的角度来说,微服务最底层首先提供的是原子服务,再朝上则可以提供更加粗颗粒度的组合服务能力. 为何要进行服务组合和编排? 简单来 ...

最新文章

  1. 五问智能教育未来发展:重点解决什么问题?
  2. 276. Paint Fence
  3. 通过MULE集成服务的几种方式
  4. B - Average Numbers CodeForces - 134A(水题,思维)
  5. 结对编程作业---电梯调度程序
  6. php工场模式讲解,PHP设计模式之工厂模式详解
  7. Dart入门—开发环境
  8. 对话图灵奖得主、CNN之父Yann LeCun:我在中国看到了AI研究热潮
  9. 取消IE“已限制此网页运行可以访问计算机的脚本
  10. 杀手级的ASUS EEE 901GO?
  11. 极限学习机ELM原理与实现
  12. linux常识 菜鸟教程
  13. Android 安装包没有签名文件问题
  14. 用python批量处理图片尺寸
  15. Oracle实现递归查询
  16. Oulipo[字符串哈希]
  17. 我的世界服务器清道夫配置文件,清道夫环保网分享:废液焚烧炉烟气处理标准配置...
  18. 微信小程序把view居中_初识微信小程序
  19. 广东电信公话200专用话机话务动态分析系统的构建
  20. SDOI2014 Round1 day2

热门文章

  1. C语言之文件读写探究(七):随机读写文件
  2. C++之继承探究(二):protected成员
  3. 底部按钮吸附_知乎的药丸按钮(二)我的 iOS 实现
  4. python123测验答案测验3_知到app数学分析3-3测验答案查询服务
  5. python调用库实现返回ping的时延_python在windows下实现ping操作并接收返回信息
  6. java开发http协议接口_java开发接口利用http协议传输数据
  7. win10 mysql 远程访问_win10 docker部署mysql并启动远程连接
  8. oracle用游标drop多个表,Oracle Procedure中使用游标cursor更新多表?
  9. 生成html_用 Pytest+Allure 生成漂亮的 HTML 图形化测试报告
  10. 汽车租赁php参考文献,国内外汽车租赁文献综述