Forest Forest
💒 首页
  • v1.5.30
  • v1.5.28
  • 🎄 ForestX
🌰 案例
💖 支持
🛫 更新记录
🧢 开发团队
⚒️ 参与贡献
  • MaxKey - 业界领先的身份管理和认证产品 (opens new window)
  • Snowy - 国内首个国密前后端分离快速开发平台 (opens new window)
  • Eoapi - 一个开源、可拓展的 API 工具平台 (opens new window)
  • Gitee (opens new window)
  • Github (opens new window)
💒 首页
  • v1.5.30
  • v1.5.28
  • 🎄 ForestX
🌰 案例
💖 支持
🛫 更新记录
🧢 开发团队
⚒️ 参与贡献
  • MaxKey - 业界领先的身份管理和认证产品 (opens new window)
  • Snowy - 国内首个国密前后端分离快速开发平台 (opens new window)
  • Eoapi - 一个开源、可拓展的 API 工具平台 (opens new window)
  • Gitee (opens new window)
  • Github (opens new window)
  • 序言

    • 🎁 新手介绍
    • 📖 文档
    • 🌰 使用案例
    • 🕵️‍ 关于作者
    • 👨‍🎓 贡献者列表
  • 入门

    • 🎬 安装配置说明
    • 🏹 Springboot环境安装
    • 📐 Springboot环境配置
    • 🎯 Springboot环境使用
    • 🏹 Spring环境安装
    • 📐 Spring环境配置
    • 🎯 Spring环境使用
    • 🏹 原生Java环境安装
    • 📐 原生Java环境配置
    • 🎯 原生Java环境使用
    • 🧬 编程式接口
  • 配置项

    • 👜 Springboot环境配置项
    • 👝 Spring环境配置项
    • 🎒 原生Java环境配置项
    • 📚 配置优先级/作用域
  • 声明式接口

    • 🧱 构建接口
    • 🍀 请求方法
    • 🚚 请求地址
    • 🎈 URL 参数
    • 🍭 请求头
    • 👔 请求体
    • 🍮 后端框架
    • 🧁 接口注解
    • 📬 接收数据
    • 🍛 数据转换
    • 🍓 成功/失败条件
    • 🍌 重试机制
    • 🥂 重定向
    • 🍔 Gzip解压
    • 🎂 日志管理
    • ⚽ 回调函数
    • 🍟 异步请求
    • 🛡️ HTTPS
    • 🍪 使用Cookie
    • 🛸 使用代理
    • 🍉 上传下载
    • 🚑 异常处理
  • 编程式接口

    • 请求API

      • 🚀 请求对象
      • 🚢 请求属性
      • ✨ 执行请求
      • 🎊 后端框架
      • 🎪 请求类型
      • 🔮 请求地址
      • 🧀 URL 参数
      • 🚅 请求头
      • 🚋 请求体
      • ⚓ 回调函数
      • 🚁 异步请求
      • 🥯 Cookie
      • 🍜 成功/失败条件
      • 🌶️ 重试机制
      • ⛵ 重定向
      • 🛰️ 请求代理
    • 响应API

      • 🌠 响应对象
      • ✒️ 读取数据
      • 🦋 响应状态码
      • 🏥 响应错误处理
      • 🎧 响应头
      • 🥞 Cookie
  • 模板表达式

    • 🍬 Hello World
    • 🍹 配置属性引用
    • 🍖 变量引用
    • 🥃 动态变量绑定
    • 🥗 参数序号引用
      • 🍍 引用对象属性
      • 🥝 调用对象方法
    • 高级特性

      • 🥪 拦截器
      • 🍏 自定义注解
      • 🍇 组合注解
      • 🥑 自定义转换器
    • v1.5.28文档
    • 模板表达式
    公子骏
    2022-07-01
    目录

    🥗 参数序号引用

    直接在${}或{}中填入从0开始的数字,其中的数字代表方法参数的序号,比如{0}代表方法的第一个参数,{1}代表第二个参数,第n个参数引用用{n-1}表示(这里的n是数字,并不是变量名)

    友情提示

    代表参数序号的数字只能是整数,不能是小数,并且不能是负数。

    @Request(url = "http://localhost:8080/hello?p1={0}&p2={1}&p3={2}")
    String send(int a, int b, int c);
    
    1
    2

    如调用send()方法并传入参数 3, 6, 9, 那么产生的url值就是

    http://localhost:8080/hello?p1=3&p2=6&p3=9
    

    以上这种{数字}的形式是参数序号的简化语法,而有时候{表达式}中的数字如果和其它表达式结合起来参与计算,那此时它就不代表数字所对应的参数了,而只是纯粹的数字。如一下例子:

    @Request(url = "http://localhost:8080/hello?p1={0.toString()}")
    String send(int num);
    
    1
    2

    如果此时调用方法send(100),那么产生的url将是:

    http://localhost:8080/hello?p1=0
    

    提示

    这里使用了模板表达式的方法调用语法

    这时{}中的0代表的并不是参数num的值,而仅仅就是数字0,作为被调用toString()方法的整数对象。

    若想此时也引用参数序号传入参数num的值,并且也参与toString()方法调用的运算,也是有办法的。

    这时就要用到参数序号的非简化语法$ + 非负整数了。

    @Request(url = "http://localhost:8080/hello?p1={$0.toString()}")
    String send(int num);
    
    1
    2

    如果此时调用方法send(100),那么产生的url将是:

    http://localhost:8080/hello?p1=100
    

    这时我们所看到{$0.toString()}就我们所期望的num参数经过调用toString()方法最终返回的结果了。

    # 简化与非简化

    说到这里,可能我们有些小伙伴就凌乱了。什么简化的?非简化的?不都是参数序号吗?怎么又变成数字了呢?

    别急,其实要区分什么时候是数字,什么时候是参数序号,以及什么是简化参数序号,什么是非简化参数序号是很简单的,只要记住以下3条规则即可。

    1. ${}或{}中只包含一个非负整数时,就是参数序号,且是简化形态的。如:{1}, {5}等等。

    2. ${}或{}中不只包含一个数字,还有其它东西存在时,那此时里面的数字都只是数字。如{1.toString()}, {json(0)}等等。

    3. ${}或{}中的非负整数以$符号开头,那它就是一个参数序号(非简化的),不管{}中只有一个还是有多个都是。如{$1}, {json($0)}, $3.compareTo($2)

    注意

    还有不要忘了参数序号只能是整数,并且不能是负的。

    # 参数序号总结

    用参数序号方式比变量名方式更为简洁,因为不用定义@Var注解,也不用引用冗长的变量名,是目前比较推荐的引用方式。

    不过它也有缺点,就是在参数较多的时候较难立刻对应起来,不够直观,比较影响代码可读性。所以还请根据场景和入参的多寡来决定用哪种引用方式。

    帮助我们改善此文档 (opens new window)
    上次更新: 2023/03/07, 12:59:48
    🥃 动态变量绑定
    🍍 引用对象属性

    ← 🥃 动态变量绑定 🍍 引用对象属性→

    Theme by Vdoing | Copyright © 2016-2023 公子骏 | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式