Feign服务调用请求方式及参数总结
前言
最近做微服务架构的项目,在用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服务调用请求方式及参数总结的更多相关文章
- Spring Cloud Alibaba(8)---Feign服务调用
Feign服务调用 有关Spring Cloud Alibaba之前写过五篇文章,这篇也是在上面项目的基础上进行开发. Spring Cloud Alibaba(1)---入门篇 Spring Clo ...
- SpringCloud(5)---Feign服务调用
SpringCloud(5)---Feign服务调用 上一篇写了通过Ribbon进行服务调用,这篇其它都一样,唯一不一样的就是通过Feign进行服务调用. 注册中心和商品微服务不变,和上篇博客一样,具 ...
- 百度网盘上下载文件,调用api接口的请求方式和参数
REST api 功能:下载单个文件. Download接口支持HTTP协议标准range定义,通过指定range的取值可以实现断点下载功能. 例如: 如果在request消息中指定“Range: b ...
- SpringCloud系列——Feign 服务调用
前言 前面我们已经实现了服务的注册与发现(请戳:SpringCloud系列——Eureka 服务注册与发现),并且在注册中心注册了一个服务myspringboot,本文记录多个服务之间使用Feign调 ...
- SpringBoot08 请求方式、参数获取注解、参数验证、前后台属性名不一致问题、自定义参数验证注解、BeanUtils的使用
1 请求方式 在定义一个Rest接口时通常会利用GET.POST.PUT.DELETE来实现数据的增删改查:这几种方式有的需要传递参数,后台开发人员必须对接收到的参数进行参数验证来确保程序的健壮性 1 ...
- SpringMVC总结三:请求Controller返回视图类型以及请求方式、参数介绍
视图解析,请求Controller返回的视图类型: @Controller @RequestMapping("/test") public class TestController ...
- Axios 各种请求方式传递参数(非axios api 请求方式)
get delete 方法较为不同 get请求方式将需要入参的数据作为 params 属性的值,最后整体作为参数传递 delete请求方式将将需要入参的数据作为 data 属性的值,最后整体作为参数传 ...
- axios 各种请求方式传递参数
get delete 方法较为不同 注意:每个方法的传参格式不同,具体用法看下方 get请求方式将需要入参的数据作为 params 属性的值,最后整体作为参数传递 delete请求方式将将需要入参的数 ...
- (2).net web api 请求方式与参数
一.GET 二.POST 如果方法名前缀不带GET 默认为POST请求方法 1.无参数 2.带一个参数 客户端请求时,名称必须为空,不能是dictCategory.不是空的话,会返回空数据 [ ] 3 ...
随机推荐
- Tcloud 云测平台-多服务框架开源
技术栈 Python3.7 + Vue前端github地址:https://github.com/bigbaser/Tcloud后端github地址:https://github.com/bigbas ...
- [AWS] 01 - What is Amazon EMR
[DE] ML on Big data: MLlib 关于 Amazon EMR 发布版本 利用 Amazon EMR 分析大数据 Amazon Athena 是一种交互式查询服务,让您能够轻松使用标 ...
- 03爬虫-requests模块基础(1)
requests模块基础 什么是requests模块 requests模块是python中原生基于网络模拟浏览器发送请求模块.功能强大,用法简洁高效. 为什么要是用requests模块 用以前的url ...
- 小记redis持久化的机制
刚学redis,就经常看到两种持久化机制在眼头晃,RDB和AOF,然而当时学的还知道这两东西是啥玩意,过段时间又忘了,中文记忆这两种概念总感觉有些别扭.今心血来潮翻看redis的配置文件,豁然开朗,仿 ...
- 【爬虫小程序:爬取斗鱼所有房间信息】Xpath(多线程版)
# 本程序亲测有效,用于理解爬虫相关的基础知识,不足之处希望大家批评指正 from queue import Queue import requests from lxml import etree ...
- 理解JS引擎的执行机制
首先,请牢记2点: (1) JS是单线程语言 (2) JS的Event Loop是JS的执行机制.深入了解JS的执行,就等于深入了解JS里的event loop 1.灵魂三问 : JS为什么是单线程的 ...
- 在window里面安装ubuntu子系统并安装图形化界面
一.开启windows子系统 1. 在win10设置里面开启开发人员选项 (设置-->更新安全--> 开发者选项 )选择开启 2.在控制面板里面开启windows子系统 (启用或关闭wi ...
- jQuery三级联动效果代码(省、市、区)
很长时间都不用jquery了,有人问我jquery写三级联动的插件我就写好了发出来吧,正好需要的人都可以看看. 一.html代码 <!DOCTYPE html> <html> ...
- Docker实战笔记命令篇
拉取一个镜像 docker pull ubuntu:14.04 查看系统中的镜像 docker images 运行镜像并进入 docker run -it ubuntu:14.04 查看运行的容器 d ...
- [scrapy-redis] install and configure scrapy-redis on CentOS 7 (1)
0. 安装依赖 yum install -y zlib zlib-devel openssl openssl-devel bzip2 bzip2-devel sqlite-devel gcc wget ...