动态传参

1.动态传参(重点) *, **
*, ** :
形参: 聚合
位置参数* -> 元组
关键字** -> 字典
实参: 打散
列表, 字符串, 元素 -> *
字典 -> **
形参顺序(重点):
位置, *args, 默认值, **kwargs

无敌传参
def func(*args, **kwargs): arguments参数 keyword-arguments关键字参数
  pass

# def chi(zhushi, cai, fushi, tang, tiandian):
#     print(zhushi,cai,fushi,tang,tiandian)
#
#
# chi("大碗大米饭", "火爆大头菜", "把子肉", "西红柿鸡蛋汤", "烤地瓜")
# chi("小碗大米饭", "火爆大头菜") # 参数不够

# 形参的顺序(重点):
#   位置  *args  默认值  **kwargs
# 以后写参数. 可以随意的进行搭配, 但是, 顺序不能串

# * 在形参位置. * 表示不定参数-接收的是位置参数
# 接收到的位置参数的动态传参: 都是元组
# def chi(*food): # 在形参这里把传递过来的实参进行了聚合,聚合成了元组
#     print(food)
#
# chi("小米粥")
# chi("小米粥", "咸鸭蛋")
# chi("爆米花", "咸鸭蛋", "辣白菜")
# chi("小米粥", "爆米花", "咸鸭蛋", "蒜茄子")

# def func(*args, a, b, c):
#     print(a, b , c, args)
#
# func(1,2,3,4,5,6,7, a=8, b=9,c=10)


# **在形参表示动态传参-关键字参数
# 关键字动态传参接收到的是字典
# def func(**kwargs):  # 也是聚合. ** 聚合成字典
#     print(kwargs)
#
# # func(1,2,3,4,5,6,7) # 位置参数. 报错
# func(a=1, b=2, c=3, haha="呵呵", good="not bad")


# def func(**kwargs, gender="男"):
#     print(gender, kwargs)
#
# func(a=5,b=3,c=6, gender="女")


# # 无敌传参
# def func(*args, **kwargs): # 参数没有限制. 随便传递
#     print(args)
#     print(kwargs)
#
# func(1,2,3,4, a=3,b=5)

# # 这里是形参
# # * 聚合
# def chi(*food):
#     print(food)
#
# lst = ["胡萝卜", "大白菜", "大萝卜", "草", "果冻"]
# # for el in lst:
# #     chi(el)
# #
# # chi(lst[0], lst[1], lst[2], lst[3], lst[4])
#
# # 这里是实参
# # * 打散
# chi(*"你今天吃了些什么") # * 打散. 把列表, 元组, 字符串打散成位置参数进行传递
# chi("胡萝卜", "大白菜", "大萝卜", "草", "果冻")

# def chi(**food): # 聚合, 聚合成字典
#     print(food)
#
# dic = {"主食":'面条', "副食":"土豆泥", "汤":"疙瘩汤"}
# dic1 = {}
#
# chi(**dic, 甜点="冰激凌") # 打散. 打散成关键字
# chi(主食="面条", 副食="土豆泥", 汤="疙瘩汤", 甜点="冰激凌")

# 形参:
#   *->元组, **->字典 表示聚合
# 实参:
#   *->列表,字符串,元组, **->字典 表示打散

  

转载于:https://www.cnblogs.com/YangWenYu-6/p/10098505.html

<think>好的,用户想了解magic-api的动态传参实现方法和示例。首先,我需要明确动态传参的定义,通常指的是在接口调用时通过路径参数、查询参数或请求体传递不同的参数。根据用户提供的引用,magic-api支持多种传参方式,比如路径传参、查询参数和JSON传参。 用户提供的引用中有几个相关的例子,比如引用[3]和[5]提到了路径传参,引用[1]展示了如何获取查询参数,引用[3]和[4]涉及JSON和文件上传的参数。需要将这些信息整合起来,说明magic-api支持的传参方式,并给出每种方式的示例。 首先,路径参数是通过URL中的占位符传递的,比如/user/{id},然后在接口中使用context.path("id")获取。查询参数则是通过URL后的?key=value形式,使用context.query("key")获取。JSON传参则是解析请求体中的JSON数据,使用context.param.json()方法。 需要注意示例代码的正确性,根据引用中的代码片段,比如引用[3]中的修改接口示例,路径参数的使用方法。同时,引用[4]中的Spring Boot注解方式可能和magic-api的脚本写法不同,需要区分开。 另外,用户可能希望了解不同传参方式的适用场景,比如路径参数适合资源标识,查询参数适合过滤条件,JSON适合复杂数据。还需要提到动态传参的灵活性,比如同一个接口可以根据参数不同执行不同逻辑,但也要注意参数校验和类型转换的问题。 最后,生成相关问题时要围绕传参方式、参数获取、校验、实际应用等方向,帮助用户深入理解。需要确保回答结构清晰,分点说明,并附上示例代码,符合用户要求的格式。</think>### Magic-API动态传参实现方法及示例 Magic-API支持三种主流传参方式,通过路径参数、查询参数和请求体参数实现动态传参[^2][^3][^5]。以下是具体实现方法: #### 一、路径传参动态片段) 在接口路径中使用`{变量名}`定义参数占位符,通过`context.path()`方法获取值: ```javascript var id = context.path("id"); // 获取路径参数 var name = context.path("name"); return db.select("select * from user where id=#{id} and name=#{name}"); ``` 接口调用示例: ``` PUT /user/update/1001/张三 ``` #### 二、查询参数(URL参数) 通过URL问号后的参数传递,使用`context.query()`获取: ```javascript var page = context.query("page") || 1; // 带默认值 var size = context.query("size") || 10; return db.page("select * from logs", page, size); ``` 调用示例: ``` GET /logs/list?page=2&size=20 ``` #### 三、请求体传参(JSON格式) 使用`context.param.json()`解析请求体中的JSON数据: ```javascript var body = context.param.json(); var result = db.update("user") .set("age", body.age) .where("id", body.id) .execute(); return {code:200, data:result}; ``` 请求示例: ```json POST /user/update { "id": 1001, "age": 28 } ``` #### 四、混合传参模式 支持同时使用多种传参方式: ```javascript var id = context.path("id"); // 路径参数 var type = context.query("type"); // 查询参数 var data = context.param.json(); // 请求体 return db.update("orders") .set("status", type) .set("info", data.remark) .where("id", id) .execute(); ``` ### 注意事项 1. 参数类型自动转换:数值型参数会自动转换为Integer/Long类型[^3] 2. 空值处理:建议使用`||`运算符设置默认值 3. 安全性:应使用预编译语句防止SQL注入,如`#{变量}`语法 4. 文件上传参数需通过`@RequestPart`注解处理[^4]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值