نشر واجهات برمجة التطبيقات باستخدام Edge API

يتم الآن عرض مستندات Apigee Edge.
انتقِل إلى مستندات Apigee X.
المعلومات

يوضِّح هذا القسم كيفية استخدام واجهة برمجة تطبيقات Edge لإنشاء منتجات واجهة برمجة التطبيقات لنشرها في بوابات المطوّرين.

إنشاء منتجات واجهة برمجة التطبيقات باستخدام واجهة برمجة التطبيقات

تتيح منتجات واجهة برمجة التطبيقات للمطوّرين تسجيل التطبيقات التي تستخدم واجهات برمجة التطبيقات باستخدام مفاتيح واجهة برمجة التطبيقات ورموز الدخول عبر OAuth. تم تصميم منتجات واجهة برمجة التطبيقات بحيث تتيح لك "تجميع" موارد واجهة برمجة التطبيقات ثم نشر هذه الحِزم في مجموعات مختلفة من المطوّرين. على سبيل المثال، قد تحتاج إلى نشر مجموعة واحدة من موارد واجهة برمجة التطبيقات للمطوّرين الشريكين بينما يمكنك نشر حزمة أخرى لمطوّري البرامج الخارجيين. تتيح لك منتجات واجهات برمجة التطبيقات تنفيذ هذا التجميع بسرعة، بدون الحاجة إلى إجراء أي تغييرات على واجهات برمجة التطبيقات الخاصة بك. وهناك ميزة إضافية تتمثل في إمكانية "ترقية" أذونات وصول المطوّرين أو "الرجوع إلى إصدار سابق منها" بدون أن يطلبوا من المطوّرين الحصول على مفاتيح مستهلك جديدة لتطبيقاتهم.

لإنشاء منتج واجهة برمجة التطبيقات باستخدام واجهة برمجة التطبيقات، عليك إصدار طلب POST إلى /organizations/{org_name}/apiproducts. للمزيد من المعلومات، يُرجى الاطّلاع على مرجع واجهة برمجة التطبيقات إنشاء منتج واجهة برمجة التطبيقات.

ينشئ الطلب التالي منتج واجهة برمجة تطبيقات باسم weather_free. يتيح منتج واجهة برمجة التطبيقات الوصول إلى جميع واجهات برمجة التطبيقات التي يعرضها الخادم الوكيل لواجهة برمجة التطبيقات المسمى weatherapi والذي يتم نشره في بيئة test. تم ضبط نوع الموافقة على auto للإشارة إلى أنّه ستتم الموافقة على أي طلب للوصول.

curl -X POST https://api.enterprise.apigee.com/v1/organization/myorg/apiproducts \
-H "Content-Type:application/json" \
-d \
'{
  "approvalType": "auto",
  "displayName": "Free API Product",
  "name": "weather_free",
  "proxies": [ "weatherapi" ],
  "environments": [ "test" ]
}' \
-u email:password 

نموذج الإجابة:

{
  "apiResources" : [ ],
  "approvalType" : "auto",
  "attributes" : [ ],
  "createdAt" : 1362759663145,
  "createdBy" : "developer@apigee.com",
  "displayName" : "Free API Product",
  "environments" : [ "test" ],
  "lastModifiedAt" : 1362759663145,
  "lastModifiedBy" : "developer@apigee.com",
  "name" : "weather_free",
  "proxies" : [ "weatherapi" ],
  "scopes" : [ ]
}

ينفّذ منتج واجهة برمجة التطبيقات الذي تم إنشاؤه أعلاه السيناريو الأساسي، وهو تفويض الطلبات إلى خادم وكيل لواجهة برمجة التطبيقات في بيئة ما. وهي تحدد منتج واجهة برمجة التطبيقات الذي يتيح للتطبيق المعتمَد الوصول إلى أي موارد لواجهة برمجة التطبيقات يتم الوصول إليها من خلال الخادم الوكيل لواجهة برمجة التطبيقات الذي يتم تشغيله في بيئة الاختبار. تعرض منتجات واجهات برمجة التطبيقات إعدادات ضبط إضافية تتيح لك تخصيص التحكّم في الوصول إلى واجهات برمجة التطبيقات لمجموعات مختلفة من المطوّرين. على سبيل المثال، يمكنك إنشاء منتجَين لواجهة برمجة التطبيقات يتيحان إمكانية الوصول إلى خوادم وكيلة مختلفة لواجهة برمجة التطبيقات. يمكنك أيضًا إنشاء منتجَين من واجهة برمجة التطبيقات يوفّران إمكانية الوصول إلى الخوادم الوكيلة نفسها لواجهة برمجة التطبيقات، ولكن بإعدادات حصص مرتبطة مختلفة.

إعدادات ضبط منتج واجهة برمجة التطبيقات

تعرض منتجات واجهة برمجة التطبيقات خيارات الضبط التالية:

الاسم الوصف تلقائي مطلوب؟
apiResources

قائمة مفصولة بفواصل من معرّفات الموارد المنتظمة (URI) أو مسارات الموارد "مجمّعة" في منتج واجهة برمجة التطبيقات.

يتم تلقائيًا ربط مسارات الموارد من المتغيّر proxy.pathsuffix. يتم تحديد لاحقة مسار الخادم الوكيل باعتبارها جزء معرّف الموارد المنتظم (URI) الذي يتبع المسار الأساسي ProxyEndpoint. على سبيل المثال، في نموذج منتج واجهة برمجة التطبيقات أدناه، يتم تحديد العنصر apiResources على أنّه /forecastrss. بما أنّ المسار الأساسي المحدّد للخادم الوكيل لواجهة برمجة التطبيقات هذا هو /weather، يعني ذلك أنّ منتج واجهة برمجة التطبيقات هذا لا يسمح سوى بإرسال الطلبات إلى /weather/forecastrss.

ويمكنك تحديد مسار معين أو يمكنك تحديد جميع المسارات الفرعية باستخدام حرف بدل. ويمكن استخدام أحرف البدل (/** و /*). ويشير حرف البدل المزدوج النجمي إلى أنّه تم تضمين جميع معرّفات الموارد المنتظمة (URI) الفرعية. تشير علامة النجمة الواحدة إلى أنّه لا يتم تضمين سوى معرّفات الموارد المنتظمة (URI) لمستوى واحد أدنى.

يتيح الحقل '/' تلقائيًا الموارد نفسها المتوفّرة في علامة '/**' بالإضافة إلى المسار الأساسي الذي يحدّده الخادم الوكيل لواجهة برمجة التطبيقات. على سبيل المثال، إذا كان "المسار الأساسي" لخادم وكيل واجهة برمجة التطبيقات هو /v1/weatherapikey، سيتوافق منتج واجهة برمجة التطبيقات مع الطلبات الموجّهة إلى /v1/weatherapikey وإلى أي معرّفات موارد منتظمة (URI) فرعية مثل /v1/weatherapikey/forecastrss و/v1/weatherapikey/region/CA، وما إلى ذلك. يمكنك الاطّلاع على صفحة إدارة منتجات واجهة برمجة التطبيقات للحصول على معلومات حول تغيير سلوك هذا الإعداد التلقائي.

لا ينطبق لا
approvalType تحدِّد هذه السياسة طريقة الموافقة على مفاتيح واجهة برمجة التطبيقات للوصول إلى واجهات برمجة التطبيقات المحدّدة من خلال منتج واجهة برمجة التطبيقات. وفي حال ضبط هذه السياسة على manual، سيكون المفتاح الذي تم إنشاؤه للتطبيق في حالة "في انتظار المراجعة". لن تعمل هذه المفاتيح إلا بعد الموافقة عليها صراحةً. أمّا في حال ضبط هذه السياسة على auto، فسيتم إنشاء جميع المفاتيح في الحالة "تمت الموافقة عليها" وستعمل على الفور. (يتم عادةً استخدام السمة auto لتوفير إمكانية الوصول إلى منتجات واجهة برمجة التطبيقات المجانية/التجريبية التي توفّر حصصًا أو إمكانات محدودة). لا ينطبق نعم
attributes

مجموعة من السمات التي يمكن استخدامها لتوسيع الملف الشخصي التلقائي للمنتجات في واجهة برمجة التطبيقات باستخدام بيانات وصفية خاصة بالعميل.

استخدِم هذه السمة لتحديد مستوى الوصول إلى منتج واجهة برمجة التطبيقات على أنه علني أو خاص أو داخلي. مثال:
"attributes": [
{
"name": "access",
"value": "public"
{
"name": "foo",
"value": "foo"
},
{
"name": "bar",
"value": "bar"
}
]
لا ينطبق لا
scopes قائمة مفصولة بفواصل من نطاقات OAuth التي تم التحقُّق من صحتها في وقت التشغيل. (يتحقّق Apigee Edge من أنّ النطاقات في أي رمز دخول مميّز يتم تقديمه تتطابق مع النطاق المحدّد في منتج واجهة برمجة التطبيقات.) لا ينطبق لا
proxies الخوادم الوكيلة المسماة لواجهة برمجة التطبيقات التي يرتبط بها منتج واجهة برمجة التطبيقات هذا. من خلال تحديد الخوادم الوكيلة، يمكنك ربط الموارد في المنتج الخاص بواجهة برمجة التطبيقات بالخوادم الوكيلة لواجهة برمجة التطبيقات، ما يمنع المطوّرين من الوصول إلى هذه الموارد من خلال الخوادم الوكيلة الأخرى لواجهة برمجة التطبيقات. لا ينطبق لا، في حال عدم تحديد السياسة، يجب تحديد apiResources بوضوح (راجِع معلومات apiResources أعلاه) وإعداد المتغيّر flow.resource.name في سياسة AssignMessage.
environments البيئات المُسمّاة (على سبيل المثال، "test" أو "prod") التي يرتبط بها منتج واجهة برمجة التطبيقات هذا. من خلال تحديد بيئة واحدة أو أكثر، يمكنك ربط الموارد المدرَجة في منتج واجهة برمجة التطبيقات ببيئة معيّنة، ما يمنع المطوّرين من الوصول إلى هذه الموارد من خلال الخوادم الوكيلة لواجهة برمجة التطبيقات في بيئة أخرى. يتم استخدام هذا الإعداد، على سبيل المثال، لمنع الوصول إلى الموارد المرتبطة بالخوادم الوكيلة لواجهة برمجة التطبيقات في "prod" من خلال الخوادم الوكيلة لواجهة برمجة التطبيقات المنشورة في "test". لا ينطبق لا، إذا لم يتم تحديده، يجب تحديد apiResources بوضوح، ويجب ضبط المتغيّر flow.resource.name في سياسة AssignMessage.
quota عدد الطلبات المسموح بها لكل تطبيق خلال الفترة الزمنية المحدّدة. لا ينطبق لا
quotaInterval عدد الوحدات الزمنية التي يتم تقييم الحصص خلالها لا ينطبق لا
quotaTimeUnit يشير ذلك المصطلح إلى الوحدة الزمنية (الدقيقة أو الساعة أو اليوم أو الشهر) التي يتم احتساب الحصص خلالها. لا ينطبق لا

في ما يلي مثال أكثر تفصيلاً لإنشاء منتج واجهة برمجة التطبيقات.

curl -X POST  https://api.enterprise.apigee.com/v1/o/{org_name}/apiproducts \
-H "Content-Type:application/json" -d \
'{
  "apiResources": [ "/forecastrss" ],
  "approvalType": "auto", 
  "attributes":
    [ {"name": "access", "value": "public"} ],
  "description": "Free API Product",
  "displayName": "Free API Product",
  "name": "weather_free",
  "scopes": [],
  "proxies": [ "weatherapi" ],
  "environments": [ "test" ],
  "quota": "10",
  "quotaInterval": "2",
  "quotaTimeUnit": "hour" }' \
-u email:password

نموذج إجابة

{
  "apiResources" : [ "/forecastrss" ],
  "approvalType" : "auto",
  "attributes" : [ {
    "name" : "access",
    "value" : "public"
  },
  "createdAt" : 1344454200828,
  "createdBy" : "admin@apigee.com",
  "description" : "Free API Product",
  "displayName" : "Free API Product",
  "lastModifiedAt" : 1344454200828,
  "lastModifiedBy" : "admin@apigee.com",
  "name" : "weather_free",
  "scopes" : [ ],
  "proxies": [ {'weatherapi'} ],
  "environments": [ {'test'} ],
  "quota": "10",
  "quotaInterval": "1",
  "quotaTimeUnit": "hour"}'
}

لمحة عن النطاقات

النطاق هو مفهوم يتم اشتقاقه من OAuth ويرتبط بشكل تقريبي بمفهوم "الإذن". في Apigee Edge، تكون النطاقات اختيارية تمامًا. يمكنك استخدام النطاقات للحصول على تفويض أكثر دقة. يرتبط كل مفتاح عميل يتم إصداره لتطبيق ما بـ "نطاق رئيسي". النطاق الرئيسي هو مجموعة من جميع النطاقات في جميع منتجات واجهة برمجة التطبيقات لهذا التطبيق التي تمت الموافقة عليها. بالنسبة إلى التطبيقات التي تمت الموافقة على استخدامها لمنتجات متعددة من واجهة برمجة التطبيقات، يكون النطاق الرئيسي هو توحيد جميع النطاقات المحدّدة في منتجات واجهة برمجة التطبيقات التي تمت الموافقة على مفتاح المستهلك لها.

عرض منتجات واجهة برمجة التطبيقات

للاطّلاع على منتجات واجهة برمجة التطبيقات التي تمّ إنشاؤها لمؤسسة باستخدام واجهة برمجة التطبيقات، يُرجى الاطّلاع على الأقسام التالية:

في ما يلي مثال على كيفية عرض منتجات واجهة برمجة التطبيقات باستخدام واجهة برمجة التطبيقات:

curl -X GET "https://ext.apiexchange.org/v1/mint/organizations/{org_name}/products?monetized=true" \
  -H "Accept:application/json" \
  -u email:password

يجب أن يبدو الرد على النحو التالي (يتم عرض جزء فقط من الرد):

{
  "product" : [ {
    "customAtt1Name" : "user",
    "customAtt2Name" : "response size",
    "customAtt3Name" : "content-length",
    "description" : "payment api product",
    "displayName" : "payment",
    "id" : "payment",
    "name" : "payment",
    "organization" : {
      ...
    },
    "pricePoints" : [ ],
    "status" : "CREATED",
    "transactionSuccessCriteria" : "status == 'SUCCESS'"
  }, {
    "customAtt1Name" : "user",
    "customAtt2Name" : "response size",
    "customAtt3Name" : "content-length",
    "description" : "messaging api product",
    "displayName" : "messaging",
    "id" : "messaging",
    "name" : "messaging",
    "organization" : ...
    },
    "pricePoints" : [ ],
    "status" : "CREATED",
    "transactionSuccessCriteria" : "status == 'SUCCESS'"
  } ],
  "totalRecords" : 2
}

تسجيل المطوّرين باستخدام واجهة برمجة التطبيقات

ويمتلك المطوّرون أو الشركات جميع التطبيقات. وبالتالي، لإنشاء تطبيق، يجب أولاً تسجيل مطوّر أو شركة.

يتم تسجيل المطوّرين في مؤسسة من خلال إنشاء ملف شخصي. وتجدُر الإشارة إلى أنّ البريد الإلكتروني للمطوّر المُدرَج في الملف الشخصي يُستخدم كمفتاح فريد للمطوّر في Apigee Edge.

لإتاحة إمكانية تحقيق الربح، عليك تحديد سمات تحقيق الربح عند إنشاء مطوّري البرامج أو تعديل بياناتهم. يمكنك أيضًا تحديد سمات عشوائية أخرى لاستخدامها في الإحصاءات المخصّصة وتنفيذ السياسات المخصّصة وما إلى ذلك، إذ لن تفسر Apigee Edge هذه السمات العشوائية.

على سبيل المثال، يسجّل الطلب التالي ملفًا شخصيًا لمطوّر برامج بعنوان بريده الإلكتروني هو ntesla@theremin.com ويحدّد مجموعة فرعية من سمات تحقيق الربح باستخدام واجهة برمجة التطبيقات Create developer:

$ curl -H "Content-type:application/json" -X POST -d \
'{"email" : "ntesla@theremin.com", 
  "firstName" : "Nikola", 
  "lastName" : "Tesla", 
  "userName" : "theremin", 
  "attributes" : [ 
  { 
    "name" : "project_type", 
    "value" : "public"
  },
  {    
   "name": "MINT_BILLING_TYPE",
   "value": "POSTPAID"
  },
  {
   "name": "MINT_DEVELOPER_ADDRESS",
   "value": "{\"address1\":\"Dev One Address\",\"city\":\"Pleasanton\",\"country\":\"US\",\"isPrimary\":true,\"state\":\"CA\",\"zip\":\"94588\"}"
  },
  {
   "name": "MINT_DEVELOPER_TYPE",
   "value": "TRUSTED"
  },
  {    
   "name": "MINT_HAS_SELF_BILLING,
   "value": "FALSE"
  },
  {
   "name" : "MINT_SUPPORTED_CURRENCY",
   "value" : "usd"
  }
 ] 
}' \
https://api.enterprise.apigee.com/v1/o/{org_name}/developers \
-u email:password 

نموذج إجابة

{
          "email" : "ntesla@theremin.com",
          "firstName" : "Nikola",
          "lastName" : "Tesla",
          "userName" : "theremin",
          "organizationName" : "{org_name}",
          "status" : "active",
          "attributes" : [ 
          {
            "name" : "project_type",
            "value" : "public"
          },
          {    
             "name": "MINT_BILLING_TYPE",
             "value": "POSTPAID"
          },
          {
             "name": "MINT_DEVELOPER_ADDRESS",
             "value": "{\"address1\":\"Dev One Address\",\"city\":\"Pleasanton\",\"country\":\"US\",\"isPrimary\":true,\"state\":\"CA\",\"zip\":\"94588\"}"
          },
          {
             "name": "MINT_DEVELOPER_TYPE",
             "value": "TRUSTED"
          },
          {    
             "name": "MINT_HAS_SELF_BILLING,
             "value": "FALSE"
          },
          {
             "name" : "MINT_SUPPORTED_CURRENCY",
             "value" : "usd"
          } 
          ],
          "createdAt" : 1343189787717,
          "createdBy" : "admin@apigee.com",
          "lastModifiedAt" : 1343189787717,
          "lastModifiedBy" : "admin@apigee.com"
        }

تسجيل تطبيقات المطوّرين باستخدام واجهة برمجة التطبيقات

يرتبط كل تطبيق مسجَّل في Apigee Edge بمطوّر ومنتج واجهة برمجة تطبيقات. عند تسجيل تطبيق نيابةً عن المطوّر، ينشئ Apigee Edge "بيانات اعتماد" (مفتاح عميل ومفتاح سري) لتحديد التطبيق. بعد ذلك، على التطبيق تمرير بيانات الاعتماد هذه كجزء من كل طلب إلى منتج واجهة برمجة تطبيقات مرتبط بالتطبيق.

يستخدم الطلب التالي واجهة برمجة التطبيقات Create Developer App لتسجيل تطبيق لدى المطوّر الذي أنشأته أعلاه: ntesla@theremin.com. وعند تسجيل تطبيق، تحدد اسمًا للتطبيق وcallbackUrl وقائمة واحدة أو أكثر من منتجات واجهة برمجة التطبيقات:
$ curl -H "Content-type:application/json" -X POST -d \
'{
  "apiProducts": [ "weather_free"], 
  "callbackUrl" : "login.weatherapp.com", 
  "keyExpiresIn" : "2630000000",
  "name" : "weatherapp"}' \
https://api.enterprise.apigee.com/v1/o/{org_name}/developers/ntesla@theremin.com/apps \
-u email:password 

يُستخدم callbackUrl من خلال بعض أنواع منح بروتوكول OAuth (مثل رمز التفويض) للتحقّق من صحة طلبات إعادة التوجيه من التطبيق. في حال استخدام OAuth، يجب ضبط هذه القيمة على القيمة نفسها مثل redirect_uri المُستخدَمة في إجراء طلبات OAuth.

تحدّد السمة keyExpiresIn، بالمللي ثانية، مدة عمر مفتاح المستهلك الذي سيتم إنشاؤه لتطبيق المطوِّر. وتشير القيمة التلقائية، -1، إلى فترة صلاحية غير محدودة.

نموذج إجابة

{
  "appId": "5760d130-528f-4388-8c6f-65a6b3042bd1",
  "attributes": [
    {
      "name": "DisplayName",
      "value": "Test Key Expires"
    },
    {
      "name": "Notes",
      "value": "Just testing this attribute"
    }
  ],
  "createdAt": 1421770824390,
  "createdBy": "wwitman@apigee.com",
  "credentials": [
    {
      "apiProducts": [
        {
          "apiproduct": "ProductNoResources",
          "status": "approved"
        }
      ],
      "attributes": [],
      "consumerKey": "jcAFDcfwImkJ19A5gTsZRzfBItlqohBt",
      "consumerSecret": "AX7lGGIRJs6s8J8y",
      "expiresAt": 1424400824401,
      "issuedAt": 1421770824401,
      "scopes": [],
      "status": "approved"
    }
  ],
  "developerId": "e4Oy8ddTo3p1BFhs",
  "lastModifiedAt": 1421770824390,
  "lastModifiedBy": "wwitman@apigee.com",
  "name": "TestKeyExpires",
  "scopes": [],
  "status": "approved"
}

إدارة مفاتيح المستهلك للتطبيقات باستخدام واجهة برمجة التطبيقات

احصل على مفتاح المستهلك (مفتاح واجهة برمجة التطبيقات) للتطبيق.

يتم عرض بيانات اعتماد التطبيق (منتج واجهة برمجة التطبيقات ومفتاح المستهلك والمفتاح السري) كجزء من الملف الشخصي للتطبيق. يمكن لمشرف المؤسسة استرداد مفتاح العميل في أي وقت.

يعرض الملف الشخصي للتطبيق قيمة مفتاح وسر المستهلك، وحالة مفتاح المستهلك، بالإضافة إلى أي عمليات ربط لمنتجات واجهة برمجة التطبيقات للمفتاح. بصفتك مشرفًا، يمكنك استرداد الملف الشخصي لمفتاح المستهلك في أي وقت باستخدام Get Key Details (الحصول على تفاصيل المفتاح) لواجهة برمجة تطبيقات Developer App API:

$ curl -X GET -H "Accept: application/json" \
https://api.enterprise.apigee.com/v1/o/{org_name}/developers/ntesla@theremin.com/apps/weatherapp/keys/HQg0nCZ54adKobpqEJaE8FefGkdKFc2J \
-u email:password

نموذج إجابة

{
  "apiProducts" : [ {
    "apiproduct" : "weather_free",
    "status" : "approved"
  } ],
  "attributes" : [ ],
  "consumerKey" : "HQg0nCZ54adKobpqEJaE8FefGkdKFc2J",
  "consumerSecret" : "1eluIIdWG3JGDjE0",
  "status" : "approved"
}

يمكنك الاطّلاع على الحصول على التفاصيل الأساسية لتطبيق مطوِّر للحصول على مزيد من المعلومات.

إضافة منتج واجهة برمجة التطبيقات إلى تطبيق ومفتاح

لتعديل تطبيق بهدف إضافة منتج جديد من واجهة برمجة التطبيقات، يجب إضافة المنتج من واجهة برمجة التطبيقات إلى مفتاح التطبيق باستخدام Add API Product to Key API. يمكنك الاطّلاع على إضافة منتج واجهة برمجة التطبيقات إلى المفتاح لمزيد من المعلومات.

إنّ إضافة منتج واجهة برمجة التطبيقات إلى مفتاح تطبيق يؤدي إلى السماح للتطبيق الذي يحمل المفتاح بالوصول إلى موارد واجهة برمجة التطبيقات المضمّنة في منتج واجهة برمجة التطبيقات. يضيف استدعاء الطريقة التالية منتجًا جديدًا لواجهة برمجة التطبيقات إلى أحد التطبيقات:

$ curl -H "Content-type:application/json" -X POST -d \
'{
  "apiProducts": [ "newAPIProduct"]
}' \
https://api.enterprise.apigee.com/v1/o/{org_name}/developers/ntesla@theremin.com/apps/weatherapp/keys/HQg0nCZ54adKobpqEJaE8FefGkdKFc2J \
-u email:password 

نموذج إجابة:

{
  "apiProducts": [
   {
     "apiproduct": "weather_free",
     "status": "approved"
   },
   {
     "apiproduct": "newAPIProduct",
     "status": "approved"
   }
 ],
 "attributes": [],
 "consumerKey": "HQg0nCZ54adKobpqEJaE8FefGkdKFc2J",
 "consumerSecret": "1eluIIdWG3JGDjE0",
 "expiresAt": -1,
 "issuedAt": 1411491156464,
 "scopes": [],
 "status": "approved"
 }

الموافقة على مفاتيح المستهلك

عند ضبط نوع الموافقة على يدوي، يمكنك تحديد المطوّرين الذين يمكنهم الوصول إلى الموارد المحمية بواسطة منتجات واجهة برمجة التطبيقات. عند ضبط الموافقة على المفاتيح لمنتجات واجهة برمجة التطبيقات على manual، يجب الموافقة صراحةً على مفاتيح المستهلك. يمكن الموافقة على المفاتيح صراحةً باستخدام واجهة برمجة التطبيقات الموافقة على مفتاح معين في تطبيق المطوّر أو إبطاله:

$ curl -X POST -H "Content-type:appilcation/octet-stream" \ 
https://api.enterprise.apigee.com/v1/o/{org_name}/developers/ntesla@theremin.com/apps/weatherapp/keys/HQg0nCZ54adKobpqEJaE8FefGkdKFc2J?"action=approve" \
-u email:password

نموذج إجابة

{
  "apiProducts" : [ {
  "apiproduct" : "weather_free",
  "status" : "approved"
} ],
  "attributes" : [ ],
  "consumerKey" : "HQg0nCZ54adKobpqEJaE8FefGkdKFc2J",
  "consumerSecret" : "1eluIIdWG3JGDjE0",
  "status" : "approved"
}

يمكنك الاطّلاع على الموافقة على مفتاح معيّن في تطبيق المطوّر أو إبطاله لمزيد من المعلومات.

الموافقة على منتجات واجهة برمجة التطبيقات لمفاتيح المستهلك

إنّ عملية ربط منتج واجهة برمجة التطبيقات بمفتاح المستهلك لها حالة أيضًا. لكي يتم الوصول إلى واجهة برمجة التطبيقات بنجاح، يجب أن تتم الموافقة على مفتاح المستهلك ويجب أن تتم الموافقة على مفتاح المستهلك لمنتج واجهة برمجة التطبيقات المناسب. يمكن الموافقة على ربط مفتاح المستهلك بمنتج واجهة برمجة التطبيقات من خلال استخدام واجهة برمجة التطبيقات الموافقة على منتج واجهة برمجة التطبيقات أو إبطاله لمفتاح لتطبيق مطوّر البرامج:

$ curl -X POST -H "Content-type:application/octet-stream" \ 
https://api.enterprise.apigee.com/v1/o/{org_name}/developers/ntesla@theremin.com/apps/weatherapp/keys/HQg0nCZ54adKobpqEJaE8FefGkdKFc2J/apiproducts/weather_free?"action=approve" \
-u email:password

لا يعرض أمر cURL هذا استجابة. يمكنك الاطّلاع على الموافقة على منتج واجهة برمجة التطبيقات أو إبطاله لمفتاح أحد تطبيقات المطوّرين لمزيد من المعلومات.

إبطال منتجات واجهة برمجة التطبيقات لمفاتيح المستهلك

هناك العديد من الأسباب التي قد تدفعك إلى إبطال عملية ربط مفتاح المستهلك بمنتج من منتجات واجهة برمجة التطبيقات. قد تحتاج إلى إزالة منتج واجهة برمجة التطبيقات من مفتاح عميل بسبب عدم دفع المطوّر للدفع، أو انتهاء الفترة التجريبية، أو بسبب الترويج لتطبيق من منتج واجهة برمجة تطبيقات إلى آخر.

لإبطال ربط مفتاح المستهلك بمنتج من واجهة برمجة التطبيقات، استخدِم واجهة برمجة التطبيقات الموافقة على مفتاح محدّد أو إبطاله في تطبيق المطوّر ، وذلك باستخدام إبطال الإجراء مقابل مفتاح المستهلك لتطبيق التطوير:

$ curl -X POST -H "Content-type:application/octet-stream" \ 
https://api.enterprise.apigee.com/v1/o/{org_name}/developers/ntesla@theremin.com/apps/weatherapp/keys/HQg0nCZ54adKobpqEJaE8FefGkdKFc2J/apiproducts/weather_free?"action=revoke" \
-u email:password

لا يعرض أمر cURL هذا استجابة. يمكنك الاطّلاع على الموافقة على مفتاح معيّن في تطبيق المطوّر أو إبطاله لمزيد من المعلومات.

فرض إعدادات منتجات واجهة برمجة التطبيقات

لفرض قيود على منتجات واجهة برمجة التطبيقات، يجب إرفاق أحد أنواع السياسات التالية بمسار الخادم الوكيل لواجهة برمجة التطبيقات:

  • التحقّق من مفتاح واجهة برمجة التطبيقات: يشير إلى مفتاح واجهة برمجة التطبيقات ويتأكّد من أنّه يمثّل تطبيقًا صالحًا ويطابق منتج واجهة برمجة التطبيقات. يمكنك الاطّلاع على سياسة التحقّق من مفتاح واجهة برمجة التطبيقات لمزيد من المعلومات.
  • عملية OAuthV1، عملية "التحقّق من الوصول": تتحقّق من التوقيع وتتحقّق من رمز الدخول لبروتوكول OAuth 1.0a و"مفتاح المستهلك"، وتطابِق التطبيق بمنتج واجهة برمجة التطبيقات. راجِع سياسة OAuth v1.0a لمعرفة مزيد من المعلومات.
  • بروتوكول OAuthV2، عملية التحقُّق من صحة رمز الدخول: يتم التحقق من صحة رمز الدخول عبر OAuth 2.0، ويطابق الرمز المميز للتطبيق، ويتحقق من صلاحية التطبيق، ثم يطابق التطبيق بأحد منتجات واجهة برمجة التطبيقات. راجِع صفحة OAuth الرئيسية لمعرفة مزيد من المعلومات.

بعد ضبط السياسات ومنتجات واجهة برمجة التطبيقات، يتم تنفيذ العملية التالية من خلال Apigee Edge:

  1. تم استلام طلب من قِبل Apigee Edge وتوجيهه إلى الخادم الوكيل المناسب لواجهة برمجة التطبيقات.
  2. يتم تنفيذ سياسة تحقّق من مفتاح واجهة برمجة التطبيقات أو رمز الدخول إلى OAuth الذي يقدّمه العميل.
  3. يعمل Edge على تحويل مفتاح واجهة برمجة التطبيقات أو رمز الدخول إلى ملف شخصي للتطبيق.
  4. يحلِّل Edge القائمة (إن وُجدت) لمنتجات واجهة برمجة التطبيقات المرتبطة بالتطبيق.
  5. يتم استخدام أول منتج واجهة برمجة تطبيقات مطابق لتعبئة متغيرات الحصة.
  6. في حال عدم تطابق أي منتج لواجهة برمجة التطبيقات مع مفتاح واجهة برمجة التطبيقات أو رمز الدخول، سيتم رفض الطلب.
  7. يفرض Edge التحكم في الوصول المستند إلى معرّف الموارد المنتظم (URI) (البيئة والخادم الوكيل لواجهة برمجة التطبيقات، ومسار معرّف الموارد المنتظم (URI)) بناءً على إعدادات منتج واجهة برمجة التطبيقات، إلى جانب إعدادات الحصة.