أين يجب أن أضع مفاتيح API الخاصة بـ discourse حتى أتمكن من جلب المشاركات؟

أحاول جلب منشورات من منصة Discourse الخاصة بي ولكني لا أعرف أين يجب أن أضع مفاتيح API الخاصة بي. لذلك، أحاول إجراء طلب جلب إلى: https://{defaultHost}/posts/{id}.json ولكنه يعطيني خطأ لأنني لم أدخل مفاتيح API، ولكن أين يجب أن أدخل مفاتيح API؟

لست متأكدًا من كيفية إجرائك لطلبات واجهة برمجة التطبيقات (API) (بأي أداة أو لغة برمجة)، ولكن مفتاح واجهة برمجة التطبيقات (API) واسم المستخدم يوضعان في ترويسة HTTP.

إليك مثال لـ curl من Discourse REST API Documentation

curl -X POST "http://127.0.0.1:3000/categories" \
-H "Content-Type: multipart/form-data;" \
-H "Api-Key: 714552c6148e1617aeab526d0606184b94a80ec048fc09894ff1a72b740c5f19" \
-H "Api-Username: discourse1" \
-F "name=89853c20-4409-e91a-a8ea-f6cdff96aaaa" \
-F "color=49d9e9" \
-F "text_color=f0fcfd"
إعجابَين (2)

أنا أقوم بذلك في nextJS. أين يجب أن أضع هذا الكود؟

لست على دراية بـ nextJS لذا لست متأكدًا تمامًا، ولكن يبدو أن nextJS يستخدم أداة تسمى SWR لإجراء طلبات API

تحتاج إلى توخي الحذر الشديد بشأن نطاق مفتاح API الذي تقوم بتخزينه في جانب العميل وأي استدعاءات API تقوم بها إلى Discourse حتى لا تعرض مفتاح API العام الخاص بك للمستخدمين نظرًا لأنه يبدو أن nextJS هو إطار عمل من جانب العميل بدلاً من جانب الخادم. الطريقة الصحيحة ربما هي أن يقوم next.js بإجراء طلب API من جانب الخادم والذي يقوم بعد ذلك بإجراء استدعاء API مصادق عليه إلى مثيل Discourse الخاص بك.

قد يساعدك هذا الرد:

وفقًا للمستندات Arguments – SWR يجب عليك القيام بذلك

const fetcher = (url, token) =>
  axios
    .get(url, { headers: { Authorization: "Bearer " + token } })
    .then((res) => res.data);
const { data, error } = useSWR(
  [`http://localhost:8000/api/v1/users/get-avatar`, auth.token],
  fetcher
);
if (error) console.log(error);
if (data) console.log(data);
إعجاب واحد (1)