You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Perl的OpenAPI::Client如何在OpenAPI GET查询请求中传递additionalProperties

首先明确你给出的OpenAPI参数定义的规则:
这个接口声明了一个名为params的查询参数,类型为键值均为字符串的对象,序列化规则为form风格且开启explode。按照OpenAPI 3.x的序列化标准,这种配置会将params对象内的所有键值对直接展开为顶层的查询参数,例如params值为{id => "1", status => "active"}时,最终生成的查询串为?id=1&status=active。

正确传参方式

Perl的OpenAPI::Client会严格按照OpenAPI定义的参数规则处理传参,你需要把参数值放在和定义中参数名匹配的键下,也就是你尝试的第一种写法是符合规范的:

my $tx = $client->findApps({
    params => { 'id' =>  '1' }
});

错误写法说明

你尝试的第二种直接传{ 'id' => '1' }的写法无法生效,因为你的OpenAPI定义中根本不存在名为id的查询参数,该参数会被库直接忽略,不会带入请求。

排查建议

如果第一种写法没有得到预期结果,可以按照以下步骤排查:

  • 确认你的OpenAPI::Client版本 >= 1.00,更早的版本对复杂对象类型的查询参数序列化支持存在缺陷
  • 调用后通过print $tx->req->url->to_string打印实际生成的请求URL,确认参数序列化结果是否符合预期

内容的提问来源于stack exchange,提问作者user2145475

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 12:09:02