Discourse Data Explorer SQLクエリ

この質問は、こちらに投稿された質問と非常によく似ていますが(ただし異なります):https://meta.discourse.org/t/dataexplorer-missing-parameter-when-running-data-explorer-queries-with-params-via-api/223812。

Data Explorerでの私のクエリは次のようになります。

-- [params]
-- topic_id :topic_id

SELECT * FROM posts WHERE topic_id = :topic_id

これはData Explorerでは問題なく動作します。次に、API経由で実行しようとすると、次のエラーが発生します。

{"success":false,"errors":["DiscourseDataExplorer::ValidationError: Missing parameter topic_id of type topic_id"]}

私のPythonリクエストは次のとおりです。


headers = {
    'Content-Type': 'multipart/form-data;',
    'Api-Key': API_KEY,
    'Api-Username': USERNAME_SYSTEM
}

params = {"topic_id": 398}

response = requests.post(url="[REDACTED]/admin/plugins/explorer/queries/10/run", headers=headers, params=params)

エラーから、topic_idを文字列として渡すことはできないと推測しますが、キーとして渡す他の方法が見つかりません。何か考えはありますか?

「いいね!」 1

URLにパラメータが渡されていません。

たとえば、次のようなものですか? data={“params”: ‘{“topic_id”:\"398\"}’}

多くの異なる代替案を試さなければなりませんでしたが、これが機能しました。

                         headers=headers, data={'params': '{\\\"topic_id\\\": \"398\"}'})```

したがって、答えは、以前の投稿(Windowsマシンから送信するときに引用符をエスケープする必要があると言っていたもの)とArkshineの投稿(params kwargではなくdataとして渡す必要があると言っていたもの)の組み合わせです。しかし、奇妙なのは、Python requestsモジュールのparams kwargの全体的なポイントは、パラメータ情報を渡すことだと思っていたことです。
「いいね!」 1

うまくいってよかったです!

Linux (wsl) または Windows を送信してみましたが、同じ問題は発生せず、どちらでも機能しました。:thinking:

data = {
    'params': '{\"topic_id\": \"3\"}'
}

response = requests.post(
    url="http://localhost:4200/admin/plugins/explorer/queries/4/run",
    headers=headers,
    data=data
)

image

「いいね!」 1

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.