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

如何使用HTTP::Request::Common的PUT请求向REST API传递HASH?

问题分析与解决

你当前的问题出在两个核心点:

  1. 构建的请求数据没有匹配API要求的外层data嵌套结构
  2. 错误地将哈希引用包裹进数组传递,导致客户端序列化时出现异常

正确的代码写法

先构建完全符合API格式的嵌套哈希结构,再直接将该哈希引用作为请求体参数传递:

# 生成符合API要求的完整数据结构
my %request_payload = (
    data => {
        customs => \%customs
    }
);

# 发送PUT请求,传入正确的哈希引用参数
my $request = PUT($url, \%request_payload);

原代码出错原因

你之前把{ 'customs' => \%customs }放进了数组@data中,REST客户端处理数组参数时会将其序列化为JSON数组,而API期望接收的是JSON对象。同时Perl中的哈希引用直接被字符串化时会输出HASH(0x...)格式的内容,这就导致API端收到了包含该字符串的数组值。

如果你的REST客户端需要手动处理JSON序列化(比如使用REST::Client),可以补充序列化步骤并设置请求头:

use JSON;

my %request_payload = (
    data => {
        customs => \%customs
    }
);
# 把哈希序列化为JSON字符串
my $json_content = encode_json(\%request_payload);

my $client = REST::Client->new();
# 发送请求时指定Content-Type
$client->PUT($url, $json_content, {'Content-Type' => 'application/json'});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 20:57:17