Pour certaines appellations d’API, vous devez transmettre un tableau de valeurs dans les données POST. Comment procéder ?
J’ai découvert par essais et erreurs comment transmettre un tableau contenant un seul élément — par exemple, pour change-owner, vous souhaitez quelque chose comme :
Bonne question, je conviens que cela peut prêter à confusion. Si vous souhaitez transmettre plusieurs post_ids, vous devez inclure plusieurs champs de formulaire pour post_ids[], comme dans l’exemple curl ci-dessous :
Est-ce que c’est toujours la méthode recommandée pour envoyer un tableau à l’API ? J’essaie de créer un web hook et je n’arrive pas à envoyer le paramètre tableau web_hook_event_type_ids.
J’ai essayé avec CURL (en tant que 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"
# J'obtiens
{"errors":["param is missing or the value is empty: web_hook"]}%
Il semble que tout ce point de connexion attende les valeurs dans un paramètre web_hook imbriqué :
Je ne suis pas un grand fan de ce format imbriqué, et il existe plusieurs points de connexion comme celui-ci sur ma liste à corriger éventuellement. Vous pouvez effectuer un appel API vers celui-ci en utilisant form-data comme suit :
Remarquez comment chaque paramètre utilise la syntaxe “tableau” web_hook[payload_url]. Si vous envoyez votre requête avec du JSON, cela ressemblera à ceci :
Ah, merci beaucoup. Ce n’est pas ce qui était indiqué dans l’API Discourse, alors je commençais à perdre la tête.
De plus, j’ai remarqué que la définition de web_hook_event_type_ids avec au moins un élément est requise, même si j’utilise wildcard_web_hook=true. Cela m’a aussi fait gratter la tête pendant un moment.