SpringCloud Feign服务调用请求方式总结

 更新时间:2020年04月17日 10:31:27   作者:经典鸡翅  
这篇文章主要介绍了SpringCloud 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的请求方式就说明白了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 手工搭建Servlet实现

    手工搭建Servlet实现

    现在作为一个Java程序员,我们已经习惯了使用IDE和Web框架进行开发,IDE帮助我们做了编译、打包的工作。Spring框架则帮助我们实现了Servlet接口,并把Servlet容器注册到了Web容器中。本文主要介绍了Servlet手工搭建,感兴趣的可以了解一下
    2021-07-07
  • Java多线程中的Future类详细解读

    Java多线程中的Future类详细解读

    这篇文章主要介绍了Java多线程中的Future类详细解读,Future表示一个可能还没有完成的异步任务的结果,针对这个结果可以添加Callback以便在任务执行成功或失败后作出相应的操作,需要的朋友可以参考下
    2023-11-11
  • Java实现DFA算法对敏感词、广告词过滤功能示例

    Java实现DFA算法对敏感词、广告词过滤功能示例

    本篇文章主要介绍了Java实现DFA算法对敏感词、广告词过滤功能示例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • SpringCloud+MyBatis分页处理(前后端分离)

    SpringCloud+MyBatis分页处理(前后端分离)

    这篇文章主要为大家详细介绍了SpringCloud+MyBatis分页处理,前后端分离,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-10-10
  • Flutter ListView 上拉加载更多下拉刷新功能实现方法

    Flutter ListView 上拉加载更多下拉刷新功能实现方法

    这篇文章主要介绍了Flutter ListView 上拉加载更多下拉刷新功能实现方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-07-07
  • Java字节与字符流永久存储json数据

    Java字节与字符流永久存储json数据

    本篇文章给大家详细讲述了Java字节与字符流永久存储json数据的方法,以及代码分享,有兴趣的参考学习下。
    2018-02-02
  • Mybatis如何使用@Mapper和@MapperScan注解实现映射关系

    Mybatis如何使用@Mapper和@MapperScan注解实现映射关系

    这篇文章主要介绍了Mybatis使用@Mapper和@MapperScan注解实现映射关系,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • Java中IO流文件读取、写入和复制的实例

    Java中IO流文件读取、写入和复制的实例

    下面小编就为大家带来一篇Java中IO流文件读取、写入和复制的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • Java IDEA集成开发工具中英文切换图文教程

    Java IDEA集成开发工具中英文切换图文教程

    相信很多小伙伴们刚接触IDEA时,看到一堆英文界面不知道如何下手,这篇文章主要给大家介绍了关于Java IDEA集成开发工具中英文切换的相关资料,需要的朋友可以参考下
    2024-04-04
  • IDEA加载项目没有src目录的问题及解决

    IDEA加载项目没有src目录的问题及解决

    这篇文章主要介绍了IDEA加载项目没有src目录的问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12

最新评论