一部の API 呼び出しでは、POST データに値の配列を渡す必要があります。その方法はどのように行うのでしょうか?
試行錯誤の結果、1 つの要素を持つ配列を渡す方法を理解しました。例えば、owner 変更の場合、以下のようにします:
username: sean-finnegan
post_ids[]: 925
(または、URL エンコードされた形式では)
post_ids%5B%5D=925&username=sean-finnegan
一部の API 呼び出しでは、POST データに値の配列を渡す必要があります。その方法はどのように行うのでしょうか?
試行錯誤の結果、1 つの要素を持つ配列を渡す方法を理解しました。例えば、owner 変更の場合、以下のようにします:
username: sean-finnegan
post_ids[]: 925
(または、URL エンコードされた形式では)
post_ids%5B%5D=925&username=sean-finnegan
素晴らしい質問です。確かに少し混乱しやすい部分ですね。複数の post_ids を渡したい場合は、post_ids[] のフォームデータフィールドを複数回指定します。以下は curl の例です:
curl -i -sS -X POST "http://localhost:8080/t/15/change-owner.json"
-H "Api-Key: api-key" \
-H "Api-Username: system" \
-F "username=blake" \
-F "post_ids[]=29" \
-F "post_ids[]=30"
こんにちは、ブレイクさん。
配列を API に送信する現在の推奨方法はこれでしょうか?Web フックを作成しようとしているのですが、web_hook_event_type_ids 配列パラメータを送信できません。
CURL で試しました(multipart/form-data として)
curl -X POST "https://MYSITE.com/admin/api/web_hooks" \
-H "Api-Key: KEY" \
-H "Api-Username: USER" \
-F "payload_url=https://MYOTHERSITE.com" \
-F "content_type=1" \
-F "wildcard_web_hook=false" \
-F "verify_certificate=true" \
-F "active=true" \
-F "web_hook_event_type_ids[]=2"
# 結果
{"errors":["param is missing or the value is empty: web_hook"]}%
また、httpie でも試しました(application/json として)
http POST https://MYSITE.com/admin/api/web_hooks \
Api-Key:KEY \
Api-Username:USER \
payload_url=https://MYOTHERSITE.com \
content_type=1 \
wildcard_web_hook:=false \
verify_certificate:=true \
active:=true \
web_hook_event_type_ids:='[2]'
# 結果
{
"errors": [
"Web hook event types can't be blank"
]
}
このエンドポイント全体が、ネストされた web_hook パラメータに値を求めているようです:
私はこのネスト形式をあまり好んでいませんが、同様のエンドポイントがいくつかあり、それらを修正する予定のリストに入っています。以下のように form-data で API リクエストを送信できます:
各パラメータに web_hook[payload_url] という「配列」構文が使われている点に注目してください。JSON でリクエストを送信する場合は、以下のようになります:
{
"web_hook": {
"payload_url": "https://example.com/hello",
"content_type": "1",
...
}
}
ああ、どうもありがとうございます。Discourse API の説明ではそうではなかったので、頭が混乱していました。![]()
また、wildcard_web_hook=true を使用する場合でも、web_hook_event_type_ids に少なくとも 1 つの項目を設定する必要があることに気づきました。これもしばらく頭を悩ませる原因でした。