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

REST API调用中字符串数组的正确格式及调试方法

Deviant Art API标签数组参数传递问题

我正在调用Deviant Art的REST API,API文档说明tags参数为array[string]类型(可选,用于描述提交内容,仅允许字母、数字和下划线,最小长度1)。但我对REST API不熟悉,始终没能正确传递字符串数组。

我试过两种写法都无效:

  • 直接用逗号分隔:item1, item2, item3
  • JSON数组格式:["item1", "item2", "item3"]

以下是我的Julia代码片段,原本直接传递数组不行,现在尝试把标签转成字符串形式,但问题仍未解决:

headers = []
data = convert_to_dict(params)
data["attachment"] = io
data["access_token"] = token.access_token

quoted_tags = map(tag->"\"$tag\"", params.tags)
tags_str = "[" * join(quoted_tags, ",") * "]"

data["tags"] = tags_str
body = HTTP.Form(data)
resp = HTTP.post(url, headers, body)
body = HTTP.payload(resp)

正确的参数传递方式

由于你使用的是表单提交(HTTP.Form),Deviant Art API遵循表单数组的通用格式:需要将参数名设为tags[],然后直接传递数组即可。HTTP.jl会自动将数组拆分为多个tags[]=标签值的键值对,这和API控制台里的示例格式一致。

修改后的代码:

headers = []
data = convert_to_dict(params)
data["attachment"] = io
data["access_token"] = token.access_token

# 直接传递数组,参数名改为tags[]
data["tags[]"] = params.tags

body = HTTP.Form(data)
resp = HTTP.post(url, headers, body)
body = HTTP.payload(resp)

调试思路

  1. 参考API控制台示例:你提到的API控制台中,标签参数的编码形式是tags%5B%5D=black,解码后就是tags[]=black,这已经明确了正确的参数格式。
  2. 抓包对比请求:用浏览器开发者工具或Wireshark捕获API控制台发送的请求,对比自己代码发送的请求,查看参数结构的差异。
  3. 用curl测试基础请求:先手动构造curl命令验证请求有效性,再转成Julia代码:
    curl -X POST "你的API地址" \
      -F "access_token=你的令牌" \
      -F "tags[]=black" \
      -F "tags[]=hot" \
      -F "attachment=@本地图片路径"
    
  4. 查阅HTTP.jl文档:确认HTTP.jl对Form中数组类型参数的处理规则,是否需要特定的键名格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 09:06:19