الحصول على المنتجات بواسطة المعرفات
في هذا المثال، نوضح كيفية استرجاع عدة منتجات دفعة واحدة عن طريق تمرير قائمة من معرفات المنتجات مفصولة بفواصل باستخدام واجهة برمجة التطبيقات OneEntry.
✅ هدف السيناريو:
- الاتصال بواجهة برمجة التطبيقات OneEntry
- تمرير قائمة من معرفات المنتجات مفصولة بفواصل
- استرجاع المنتجات المطابقة ومراجعة النتائج
✅ ما تحتاجه:
- عنوان URL صالح للمشروع PROJECT_URL ورمز التطبيق APP_TOKEN للمصادقة مع واجهة برمجة التطبيقات OneEntry.
- معرفات منتجات معروفة موجودة في مشروعك على OneEntry.
📌 مهم:
- getProductsByIds تعيد مصفوفة بسيطة IProductsEntity[]، وليس
{ items, total }. - هذه الأمثلة لا تتضمن معالجة الأخطاء.
- يمكنك إدارة الأخطاء باستخدام كتلة try-catch أو من خلال استخدام بناء مثل await Promise.catch((error) => error).
📚 انظر في الوثائق:
📦 مرجع SDK:
جربها مباشرة
قم بتشغيل هذه الطريقة بشكل تفاعلي في JS SDK sandbox — قم بتوصيل عنوان URL لمشروعك ورمز التطبيق عند الزيارة الأولى، ثم افتح:
- الحصول على المنتجات بواسطة المعرفات — في هذا المثال، نوضح كيفية استرجاع عدة منتجات دفعة واحدة عن طريق تمرير قائمة من معرفات المنتجات مفصولة بفواصل باستخدام واجهة برمجة التطبيقات OneEntry.
السيناريو
1. استيراد defineOneEntry من SDK وتعريف PROJECT_URL و APP_TOKEN
مثال:
import { defineOneEntry } from 'oneentry';
import type { IProductsEntity } from 'oneentry/dist/products/productsInterfaces';
const PROJECT_URL = 'your-project-url';
const APP_TOKEN = 'your-app-token';
2. إنشاء عميل API باستخدام defineOneEntry()
مثال:
const { Products } = defineOneEntry(PROJECT_URL, {
token: APP_TOKEN,
});
3. استدعاء Products.getProductsByIds() باستخدام Products.getProductsByIds()
مثال:
const products = await Products.getProductsByIds('13,14,15', 'en_US');
console.log('Products: ', products);
النتيجة:
[
{
"id": 15,
"attributeSetIdentifier": "product",
"localizeInfos": {
"title": "Orange ball"
},
"statusLocalizeInfos": {},
"isVisible": true,
"statusIdentifier": null,
"position": 1,
"templateIdentifier": null,
"shortDescTemplateIdentifier": null,
"price": 400,
"additional": {
"prices": {
"min": 100,
"max": 999
}
},
"sku": null,
"isSync": true,
"categories": [
"products"
],
"paymentStages": null,
"rating": {},
"attributeValues": {
"price": {
"type": "real",
"value": "400",
"isIcon": false,
"position": 0,
"additionalFields": {},
"isProductPreview": false
},
"currency": {
"type": "string",
"value": "USD",
"isIcon": false,
"position": 1,
"additionalFields": {},
"isProductPreview": false
},
"image": {
"type": "image",
"value": [],
"isIcon": false,
"position": 2,
"additionalFields": {},
"isProductPreview": true
}
},
"productPages": [
{
"id": 17,
"pageId": 49,
"productId": 15,
"positionId": 1287,
"categoryPath": "products"
}
],
"blocks": [],
"moduleFormConfigs": [],
"discountConfig": {}
},
{
"id": 14,
"attributeSetIdentifier": "product",
"localizeInfos": {
"title": "Green ball"
},
"statusLocalizeInfos": {},
"isVisible": true,
"statusIdentifier": null,
"position": 2,
"templateIdentifier": null,
"shortDescTemplateIdentifier": null,
"price": 340,
"additional": {
"prices": {
"min": 100,
"max": 999
}
},
"sku": null,
"isSync": true,
"categories": [
"products"
],
"paymentStages": null,
"rating": {},
"attributeValues": {
"price": {
"type": "real",
"value": "340",
"isIcon": false,
"position": 0,
"additionalFields": {},
"isProductPreview": false
},
"currency": {
"type": "string",
"value": "USD",
"isIcon": false,
"position": 1,
"additionalFields": {},
"isProductPreview": false
},
"image": {
"type": "image",
"value": [],
"isIcon": false,
"position": 2,
"additionalFields": {},
"isProductPreview": true
}
},
"productPages": [
{
"id": 18,
"pageId": 49,
"productId": 14,
"positionId": 1288,
"categoryPath": "products"
}
],
"blocks": [],
"moduleFormConfigs": [],
"discountConfig": {}
},
{
"id": 13,
"attributeSetIdentifier": "product",
"localizeInfos": {
"title": "Red ball"
},
"statusLocalizeInfos": {},
"isVisible": true,
"statusIdentifier": null,
"position": 3,
"templateIdentifier": null,
"shortDescTemplateIdentifier": null,
"price": 300,
"additional": {
"prices": {
"min": 100,
"max": 999
}
},
"sku": null,
"isSync": true,
"categories": [
"products"
],
"paymentStages": null,
"rating": {},
"attributeValues": {
"price": {
"type": "real",
"value": "300",
"isIcon": false,
"position": 0,
"additionalFields": {},
"isProductPreview": false
},
"currency": {
"type": "string",
"value": "USD",
"isIcon": false,
"position": 1,
"additionalFields": {},
"isProductPreview": false
},
"image": {
"type": "image",
"value": [],
"isIcon": false,
"position": 2,
"additionalFields": {},
"isProductPreview": true
}
},
"productPages": [
{
"id": 19,
"pageId": 49,
"productId": 13,
"positionId": 1289,
"categoryPath": "products"
}
],
"blocks": [],
"moduleFormConfigs": [],
"discountConfig": {}
}
]
4. تعيد مصفوفة بسيطة، وليس { items, total }
مثال:
const titles = (products as IProductsEntity[]).map((p) => p.localizeInfos?.title);
console.log('titles: ', titles);
النتيجة:
[
"Orange ball",
"Green ball",
"Red ball"
]
المثال النهائي
// 1. Import defineOneEntry from SDK and define PROJECT_URL and APP_TOKEN
import { defineOneEntry } from 'oneentry';
import type { IProductsEntity } from 'oneentry/dist/products/productsInterfaces';
const PROJECT_URL = 'your-project-url';
const APP_TOKEN = 'your-app-token';
// 2. Creating an API client with [defineOneEntry()](/docs/index/#Installation)
const { Products } = defineOneEntry(PROJECT_URL, {
token: APP_TOKEN,
});
// 3. Call Products.getProductsByIds() with [Products.getProductsByIds()](/docs/products/getProductsByIds)
const products = await Products.getProductsByIds('13,14,15', 'en_US');
console.log('Products: ', products);
// 4. Returns a plain array, NOT `{ items, total }`
const titles = (products as IProductsEntity[]).map((p) => p.localizeInfos?.title);
console.log('titles: ', titles);