• 关于spring cloud接口参数的注意事项


     现在微服务在行业内应用非常广范,现在公司项目也是采用微服务的架构,实现半前后端分离,微服务采用fegin暴露接口,谈谈接口定义以及调用踩到的几个坑:

    1、服务提供

      定义接口端

    @Api(value = "Client接口")
    @FeignClient(name = "xxx-service-${service.version}/${.version}/xxx")
    public interface XxxServiceClient {

    @RequestMapping("/list")
    public Page<xxx> list(@RequestBody FeignParam<xxx> paramFeignParam,@RequestParam(value="billFlag",required=false) String billFlag);

    @RequestMapping("/get")

    public xxxget(@RequestParam("id") long id);

    }

    1、接口定义包括RequestMapping、 postMapping、 getMapping ,对于post请求采用postMapping注解,如果get请求定义了postMapping为报

    Method findById not annotated with HTTP method type (ex. GET, POST),可以采用RequestMapping ,method=get

    2、传入的方法参数定义加requestParam注解,如果不加默认的是requestPost,但如果传入时 get,那么接收到的参数值为null,所以一定要加@requestParam

      但是加了@requestParam,如果没有加注解的参数,如("id"),或者value=("id"),那么启动时会报错RequestParam.value() was empty on parameter 0,

    但如果加了在项目打包时听说参数名称会变化,导致有些服务调用时会报参数不存在。只样只能把注解的参数名称去掉

    第二个参数是required,默认是 true,必传,如果为空会报错,所以需要改为required=false

    3、如果参数是Map时只能加@RequestParam,不需要加参数,如果加了(“ ”)参数也会报找不到变量,因为map传进来名称会有些变化,不是map名

    二、服务消费者

    服务消费者一盘是在前端的controller层,本身是一个requestMapping或者postMapping方法,方法里面必须添加@requestParam注解,否则在调用fegin接口时,变量在controller有值,但传到接口后端显示null

    以上是做项目碰到地坑,如有理解不到位,望大佬指定

  • 相关阅读:
    mysql book网盘
    mysql数据库测试库下载
    TEMP
    测试
    吴炳锡
    ACMUG
    mysql select语句执行顺序
    mysql mha高可用架构的安装
    执行计划解读 简朝阳 (Sky Jian) and 那蓝蓝海
    mysql字符串比较
  • 原文地址:https://www.cnblogs.com/wjlstation/p/13620960.html
Copyright © 2020-2023  润新知