استعلام SQL لمستكشف بيانات Discourse

لدي سؤال مشابه جدًا للسؤال المنشور هنا: `DataExplorer::ValidationError: Missing parameter` when running Data Explorer queries with [params] via API.

استعلامي في مستكشف البيانات يبدو كالتالي:

-- [params]
-- topic_id :topic_id

SELECT * FROM posts WHERE topic_id = :topic_id

هذا يعمل بشكل جيد في مستكشف البيانات. ثم، عندما أحاول تشغيله عبر واجهة برمجة التطبيقات (API) أحصل على:

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

إليك طلب بايثون الخاص بي:


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. ما أجده غريبًا مع ذلك، هو أنني اعتقدت أن الغرض الكامل من معامل params في وحدة طلبات Python هو تمرير معلومات المعامل.
إعجاب واحد (1)

يسرني أن الأمر نجح!

لقد حاولت إرسال لينكس (wsl) أو ويندوز؛ ليس لدي نفس المشكلة، وقد نجح الأمر مع كليهما. :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.