Node SDK
عميل TypeScript الرسمي لـ Listings API، دون أي تبعيات، مع جلب صفحات النتائج تلقائيًا وتعريفات أنواع مضمّنة لـ Node 18 والإصدارات الأحدث.
listingsapi-js هو عميل Node.js/TypeScript الرسمي لـ Listings API v4. يدير المواقع وإدراجات الأنشطة التجارية في الأدلة والتقييمات والمنشورات والصور وتحليلات الملفات من خلال عميل واحد ذي بنية مسطحة، مع دعم مدمج لتقسيم النتائج إلى صفحات باستخدام المؤشرات، وترميز المعرّفات تلقائيًا، وإعادة المحاولة، والأخطاء ذات الأنواع المحددة.
التثبيت
npm install listingsapi-jsالمصادقة
احصل على مفتاح API من مفاتيح API → مفتاح جديد في لوحة التحكم للمطورين في Listings API.
import { ListingsAPI } from 'listingsapi-js'; const client = new ListingsAPI(); // reads LISTINGSAPI_KEY from envconst explicit = new ListingsAPI({ apiKey: 'your-api-key' }); // or pass it directlyتقبل الدالة البانية أيضًا baseUrl (القيمة الافتراضية https://listingsapi.com)، وtimeout (القيمة الافتراضية 240000 مللي ثانية)، وmaxRetries (القيمة الافتراضية 2). راجع الإعدادات.
مثال سريع
import { ListingsAPI } from 'listingsapi-js'; const client = new ListingsAPI(); const result = await client.fetchAllLocations({ first: 5 });if (!Array.isArray(result)) {for (const location of result.locations) { console.log(location.name, '--', location.city);}}الموارد
تتوفر جميع الدوال على مثيل العميل:
لا توفر حزمة SDK هذه بعد واجهة لـ Social API، التي تشمل العلامات التجارية والحسابات الاجتماعية المتصلة والمنشورات على Facebook وInstagram وX وLinkedIn وPinterest؛ استدعها مباشرةً بالرجوع إلى مرجع Social REST.
تقسيم النتائج إلى صفحات
تدعم الدوال التي تُرجع قوائم تقسيم النتائج إلى صفحات باستخدام المؤشرات.
// Single pageconst page = await client.fetchAllLocations({ first: 25 });if (!Array.isArray(page)) {console.log(page.locations); // Location[]console.log(page.pageInfo); // { hasNextPage, hasPreviousPage, startCursor, endCursor } // Next pageif (page.pageInfo.hasNextPage) { const next = await client.fetchAllLocations({ first: 25, after: page.pageInfo.endCursor!, });}} // Auto-paginate: returns a flat Location[]const all = await client.fetchAllLocations({ fetchAll: true, pageSize: 100 });يتبع searchLocations وfetchInteractions النمط نفسه: كائن صفحة افتراضيًا، ومصفوفة مسطحة عند استخدام fetchAll: true.
ترميز المعرّفات
مرّر معرّفات المواقع الرقمية في أي موضع: ترمّزها حزمة SDK تلقائيًا باستخدام base64. تُقبل المعرّفات المرمّزة مسبقًا كما هي، وتُصدَّر دالة الترميز إذا احتجت إلى استخدامها بنفسك.
import { encodeLocationId } from 'listingsapi-js'; // These are equivalentawait client.fetchPremiumListings(16808);await client.fetchPremiumListings('TG9jYXRpb246MTY4MDg='); encodeLocationId(16808); // 'TG9jYXRpb246MTY4MDg='معالجة الأخطاء
يشتق كل خطأ في حزمة SDK من ListingsAPIError. تؤدي حالات فشل API إلى طرح APIError أو إحدى فئاته الفرعية، سواء أبلغت عنها المنصة برمز حالة HTTP أو ضمن متن استجابة HTTP 200 (تَرِد أخطاء الرموز المميزة غير الصالحة والتحقق من صحة عمليات الكتابة في حمولات errors[]، وقد تُبلغ عمليات الكتابة عن success: false). تطرح حزمة SDK استثناءات لجميع هذه الحالات، لذا لا تحتاج أبدًا إلى فحص علامات success بنفسك. تؤدي حالات فشل الشبكة إلى طرح APIConnectionError.
يتضمن كل APIError القيم statusCode وresponseBody وcode (أول رمز خطأ من المنصة، e.g. "SY10005")، وerrors (يُوحَّد تنسيق كل عنصر إلى { code, message, context }).
import { ListingsAPI, APIError, RateLimitError } from 'listingsapi-js'; const client = new ListingsAPI(); try {await client.fetchAllLocations();} catch (error) {if (error instanceof RateLimitError) { console.log(error.retryAfter); // seconds to wait} else if (error instanceof APIError) { console.log(error.statusCode); // 401, 404, 500, or 200 for payload-level errors console.log(error.code); // first platform code, e.g. 'SY10005' console.log(error.errors); // [{ code, message, context }, ...]}}يعيد العميل المحاولة تلقائيًا عند تلقي استجابات 429 و5xx (2 من المحاولات افتراضيًا، مع الالتزام بـ Retry-After). راجع معالجة الأخطاء للاطلاع على أنماط إعادة المحاولة وإرشادات رموز الحالة.
الخطوات التالية
- التثبيت: تثبيت إصدارات محددة، والمقارنة بين ESM وCJS
- البدء السريع: أول برنامج نصي يعمل لديك
- الإعدادات: تجاوز عنوان URL الأساسي وإعداد TypeScript
- حالات الاستخدام: 10 أمثلة تطبيقية من البداية إلى النهاية
- المواقع، التقييمات، إدراجات الأنشطة التجارية، التحليلات