مرجع خصائص نقاط النهاية

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

يوضِّح هذا الموضوع خصائص النقل التي يمكن ضبطها في إعدادَي TargetEndpoint وProxyEndpoint للتحكّم في الرسائل وسلوك الاتصال. للحصول على التغطية الكاملة لإعداد TargetEndpoint وProxyEndpoint، يُرجى الاطّلاع على مرجع إعداد الخادم الوكيل لواجهة برمجة التطبيقات.

خصائص نقل TargetEndpoint

يحدّد عنصر HTTPTargetConnection في إعدادات TargetEndpoint مجموعة من خصائص نقل HTTP. يمكنك استخدام هذه الخصائص لضبط الإعدادات على مستوى النقل.

يتم ضبط الخصائص على عناصر TargetEndpoint HTTPTargetConnection على النحو الموضّح أدناه:

<TargetEndpoint name="default">
  <HTTPTargetConnection>
    <URL>http://mocktarget.apigee.net</URL>
    <Properties>
      <Property name="supports.http10">true</Property>
      <Property name="request.retain.headers">User-Agent,Referer,Accept-Language</Property>
      <Property name="retain.queryparams">apikey</Property>
    </Properties>
    <CommonName>COMMON_NAME_HERE</CommonName>
  </HTTPTargetConnection>
</TargetEndpoint>

مواصفات خاصية النقل TargetEndpoint

اسم الموقع القيمة التلقائية الوصف
keepalive.timeout.millis 60000 انتهت مهلة عدم نشاط الاتصال للاتصال الهدف في مجموعة الاتصالات. إذا كان الاتصال في مجموعة المختارات غير نشِط لفترة تتجاوز الحد المحدد، سيتم إغلاق الاتصال.
connect.timeout.millis

3000

انتهت مهلة الاتصال الهدف. تعرض Edge رمز حالة HTTP 503 في حال انتهاء مهلة الاتصال.

io.timeout.millis 55000

إذا لم تكن هناك بيانات يمكن قراءتها خلال المدة المحددة بالمللي ثانية، أو إذا لم يكن المقبس جاهزًا لكتابة البيانات خلال عدد محدد من المللي ثانية، سيتم التعامل مع العملية على أنها مهلة.

  • إذا انتهت المهلة أثناء كتابة طلب HTTP، سيتم عرض 408, Request Timeout.
  • إذا انتهت المهلة أثناء قراءة استجابة HTTP، سيتم عرض 504, Gateway Timeout.

ويجب أن تكون هذه القيمة أصغر دائمًا من قيمة الخاصيةproxy_read_timeout للمضيف الافتراضي.

يجب أن تكون هذه القيمة أقل من المهلة التي يستخدمها جهاز التوجيه للاتصال بمعالج الرسائل. راجِع ضبط مهلة جهاز التوجيه لمزيد من المعلومات.

يمكنك الاطّلاع على إعدادات io.timeout.millis وapi.timeout في Edge لمزيد من المعلومات.

supports.http10 true إذا كانت هذه القيمة true ويرسل العميل طلب الإصدار 1.0، يتم أيضًا إرسال طلب الإصدار 1.0 للهدف. وبخلاف ذلك، يتم إرسال طلب 1.1 إلى الاستهداف.
supports.http11 true إذا كانت هذه القيمة true ويرسل العميل طلب 1.1، يتم أيضًا إرسال الطلب 1.1 إلى الهدف، وإلا سيتم إرسال طلب 1.0 إلى الهدف.
use.proxy true في حال ضبط هذه السياسة على true وتحديد إعدادات الخادم الوكيل في http.properties (عمليات النشر في المؤسسة فقط)، سيتم ضبط الاتصالات المستهدفة على استخدام الخادم الوكيل المحدَّد.
use.proxy.tunneling true في حال ضبط هذا الإعداد على true وتحديد إعدادات الخادم الوكيل في http.properties (عمليات النشر في المؤسسة فقط)، يتم ضبط الاتصالات المستهدفة على استخدام النفق المحدّد. وإذا كان الاستهداف يستخدم بروتوكول أمان طبقة النقل (TLS) أو طبقة المقابس الآمنة، سيتم تجاهل هذه السمة، ويتم دائمًا إرسال الرسالة عبر نفق.
enable.method.override false بالنسبة إلى طريقة HTTP المحدّدة، يتم ضبط عنوان X-HTTP-Method-Override على الطلب الصادر إلى الخدمة المستهدفة. مثلاً: <Property name="GET.override.method">POST</Property>
*.override.method لا ينطبق بالنسبة إلى طريقة HTTP المحدّدة، يتم إعداد عنوان X-HTTP-Method-Override على الطلب الصادر. مثلاً: <Property name="GET.override.method">POST</Property>
request.streaming.enabled false

بشكل تلقائي (false)، تتم قراءة حمولات طلبات HTTP في مخازن مؤقتة، وتعمل السياسات التي يمكنها العمل على الحمولة على النحو المتوقع. وفي الحالات التي يزيد فيها حجم الحمولات عن حجم المخزن المؤقت (10 ميغابايت)، يمكنك ضبط هذه السمة على true. عند استخدام true، لا تتم قراءة حمولات طلبات HTTP في المخزن المؤقت، بل يتم بثّها كما هي إلى نقطة النهاية الهدف. في هذه الحالة، يتم استبعاد أي سياسات تعمل على الحمولة في تدفق طلب TargetEndpoint. يُرجى الاطّلاع أيضًا على طلبات البث والردود.

response.streaming.enabled false

وحسب الإعدادات التلقائية (false)، تتم قراءة حمولات استجابة HTTP في مخازن مؤقتة، وتعمل السياسات التي يمكنها العمل على الحمولة على النحو المتوقع. وفي الحالات التي يزيد فيها حجم الحمولات عن حجم المخزن المؤقت (10 ميغابايت)، يمكنك ضبط هذه السمة على true. عند استخدام true، لا تتم قراءة حمولات استجابة HTTP في المخزن المؤقت، بل يتم بثها كما هي في مسار استجابة ProxyEndpoint. في هذه الحالة، يتم استبعاد أي سياسات تعمل على الحمولة في تدفق استجابة TargetEndpoint. راجِع أيضًا طلبات البث والردود.

success.codes لا ينطبق

يتعامل Apigee Edge تلقائيًا مع رمز HTTP 4XX أو 5XX على أنّه خطأ، ويتعامل مع رمز HTTP 1XX و2XX و3XX على أنّه تم بنجاح. تتيح هذه السمة تعريفًا واضحًا لرموز النجاح، على سبيل المثال، تتعامل السمة 2XX, 1XX, 505 مع أي رموز استجابة HTTP لـ 100 و200 و505 على أنّها ناجحة.

يؤدي ضبط هذه السمة إلى استبدال القيم التلقائية. لذلك، إذا أردت إضافة رمز HTTP 400 إلى قائمة رموز النجاح التلقائية، اضبط هذه السمة على النحو التالي:

<Property name="success.codes">1XX,2XX,3XX,400</Property>

إذا كنت تريد التعامل مع رمز HTTP 400 فقط كرمز نجاح، اضبط السمة على النحو التالي:

<Property name="success.codes">400</Property>

من خلال ضبط رمز HTTP 400 على أنّه رمز النجاح الوحيد، سيتم التعامل مع الرموز 1XX و2XX و3XX على أنّها حالات تعذُّر.

compression.algorithm لا ينطبق تعيد Apigee Edge تلقائيًا توجيه الطلبات إلى الهدف باستخدام نوع الضغط نفسه لطلب العميل. وإذا تم استلام الطلب من العميل باستخدام ضغط gzip مثلاً، تعيد Apigee Edge توجيه الطلب لاستهدافه باستخدام ضغط gzip. إذا كان الردّ الذي تم تلقّيه من الهدف يستخدم deflate، تعيد Apigee Edge توجيه الاستجابة إلى العميل باستخدام deflate. القيمتان المسموح بإدراجهما هما:
  • gzip: إرسال الرسائل دائمًا باستخدام ضغط gzip
  • deflate: دائمًا إرسال الرسائل باستخدام ضغط الانكماش
  • بدون: إرسال الرسالة دائمًا بدون أي ضغط

راجِع أيضًا: هل يتوافق Apigee مع الضغط/إلغاء الضغط باستخدام GZIP/deflate؟

request.retain.headers.
enabled
true وفقًا للإعدادات التلقائية، تحتفظ Apigee Edge دائمًا بجميع عناوين HTTP في الرسائل الصادرة. وعند ضبط هذه السياسة على true، يتم ضبط جميع عناوين HTTP المتوفّرة في الطلب الوارد على الطلب الصادر.
request.retain.headers لا ينطبق تحدِّد هذه السياسة عناوين HTTP معيّنة من الطلب الذي يجب ضبطه على الطلب الصادر إلى الخدمة الهدف. على سبيل المثال، لتمرير عنوان User-Agent، اضبط القيمة request.retain.headers على User-Agent. يتم تحديد عناوين HTTP متعددة في شكل قائمة مفصولة بفواصل، على سبيل المثال، User-Agent,Referer,Accept-Language. وتلغي هذه السمة request.retain.headers.enabled. إذا تم ضبط request.retain.headers.enabled على false، ستظل أي عناوين محدَّدة في السمة request.retain.headers مضبوطة على الرسالة الصادرة.
response.retain.headers.
enabled
true وفقًا للإعدادات التلقائية، تحتفظ Apigee Edge دائمًا بجميع عناوين HTTP في الرسائل الصادرة. أمّا في حال ضبط هذه السياسة على true، فتكون جميع عناوين HTTP المتوفّرة في الاستجابة الواردة من الخدمة المستهدفة على استجابة صادرة قبل تمريرها إلى ProxyEndpoint.
response.retain.headers لا ينطبق تحدِّد هذه السياسة عناوين HTTP معيّنة من الاستجابة التي يجب ضبطها على الاستجابة الصادرة قبل تمريرها إلى ProxyEndpoint. على سبيل المثال، لتمرير العنوان Expires، اضبط القيمة response.retain.headers على Expires. يتم تحديد عناوين HTTP متعددة في شكل قائمة مفصولة بفواصل، على سبيل المثال، Expires,Set-Cookie. وتلغي هذه السمة response.retain.headers.enabled. إذا تم ضبط response.retain.headers.enabled على false، ستظل أي عناوين محدّدة في السمة response.retain.headers مضبوطة على الرسالة الصادرة.
retain.queryparams.
enabled
true وفقًا للإعدادات التلقائية، تحتفظ Apigee Edge دائمًا بجميع مَعلمات طلب البحث في الطلبات الصادرة. وعند ضبط هذه السياسة على true، يتم ضبط جميع معلَمات طلب البحث المتوفرة في الطلب الوارد على الطلب الصادر إلى الخدمة الهدف.
retain.queryparams لا ينطبق تحدِّد مَعلمات طلب بحث محدّدة لضبطها في الطلب الصادر على سبيل المثال، لتضمين مَعلمة طلب البحث apikey من رسالة الطلب، اضبط retain.queryparams على apikey. يتم تحديد معلَمات طلب بحث متعددة في شكل قائمة مفصولة بفواصل، مثل apikey,environment. وتلغي هذه السمة السمة retain.queryparams.enabled.

خصائص نقل ProxyEndpoint

تحدد عناصر ProxyEndpoint HTTPTargetConnection مجموعة من خصائص نقل HTTP. ويمكن استخدام هذه السمات لضبط الإعدادات على مستوى النقل.

يتم ضبط الخصائص على عناصر ProxyEndpoint HTTPProxyConnection على النحو التالي:

<ProxyEndpoint name="default">
  <HTTPProxyConnection>
    <BasePath>/v1/weather</BasePath>
    <Properties>
      <Property name="request.streaming.enabled">true</Property>
    </Properties>
    <VirtualHost>default</VirtualHost>
    <VirtualHost>secure</VirtualHost>
  </HTTPProxyConnection>
</ProxyEndpoint>

لمزيد من المعلومات حول المضيفات الافتراضية، راجع معلومات عن المضيفين الافتراضيين.

خاصية النقل ProxyEndpoint مواصفات

اسم الموقع القيمة التلقائية الوصف
X-Forwarded-For false عند ضبط هذه السياسة على true، تتم إضافة عنوان IP للمضيف الافتراضي إلى الطلب الصادر باعتباره قيمة عنوان HTTP X-Forwarded-For.
request.streaming.
enabled
false وحسب الإعدادات التلقائية (false)، تتم قراءة حمولات طلبات HTTP في مخازن مؤقتة، وتعمل السياسات التي يمكنها العمل على الحمولة على النحو المتوقع. في الحالات التي يزيد فيها حجم الحمولات عن حجم المخزن المؤقت (10 ميغابايت)، يمكنك ضبط هذه السمة على true. عند استخدام true، لا تتم قراءة حمولات طلبات HTTP في المخزن المؤقت، بل يتم بثّها كما هي في مسار طلب TargetEndpoint. في هذه الحالة، يتم استبعاد أي سياسات تعمل على الحمولة في تدفق طلب ProxyEndpoint. يُرجى الاطّلاع أيضًا على طلبات البث والردود.
response.streaming.
enabled
false وحسب الإعدادات التلقائية (false)، تتم قراءة حمولات استجابة HTTP في مخازن مؤقتة، وتعمل السياسات التي يمكنها العمل على الحمولة على النحو المتوقع. وفي الحالات التي يزيد فيها حجم الحمولات عن حجم المخزن المؤقت (10 ميغابايت)، يمكنك ضبط هذه السمة على true. عند استخدام true، لا تتم قراءة حمولات استجابة HTTP في المخزن المؤقت، بل يتم بثها كما هي إلى البرنامج. في هذه الحالة، يتم استبعاد أي سياسات تعمل على الحمولة في تدفق استجابة ProxyEndpoint. يُرجى الاطّلاع أيضًا على طلبات البث والردود.
compression.algorithm لا ينطبق

وفقًا للإعدادات التلقائية، تلتزم Apigee Edge بنوع الضغط الذي تم ضبطه لأي رسالة يتم استلامها. على سبيل المثال، عندما يرسل العميل طلبًا يستخدم ضغط gzip، يعيد Apigee Edge توجيه الطلب لاستهدافه باستخدام ضغط gzip. يمكنك إعداد خوارزميات الضغط ليتم تطبيقها بشكل صريح من خلال ضبط هذه السمة على TargetEndpoint أو ProxyEndpoint. القيمتان المسموح بإدراجهما هما:

  • gzip: إرسال الرسائل دائمًا باستخدام ضغط gzip
  • deflate: دائمًا إرسال الرسائل باستخدام ضغط الانكماش
  • بدون: إرسال الرسالة دائمًا بدون أي ضغط

راجِع أيضًا: هل يتوافق Apigee مع الضغط/إلغاء الضغط باستخدام GZIP/deflate؟

api.timeout لا ينطبق

ضبط المهلة المحدَّدة لخوادم وكيل واجهة برمجة التطبيقات الفردية

يمكنك ضبط الخوادم الوكيلة لواجهة برمجة التطبيقات، حتى لو تم تفعيل البث فيها، لانتهاء المهلة بعد وقت محدّد بالحالة 504 Gateway Timeout. إنّ حالة الاستخدام الأساسية هذه هي للعملاء الذين لديهم خوادم وكيلة لواجهة برمجة التطبيقات يستغرق تنفيذها وقتًا أطول. على سبيل المثال، لنفترض أنك بحاجة إلى خوادم وكيلة محددة تنتهي المهلة قبل 3 دقائق. في ما يلي كيفية استخدام api.timeout.

  1. تأكّد أولاً من ضبط جهاز موازنة الحمل وجهاز التوجيه ومعالج الرسائل على انتهاء المهلة بعد ثلاث دقائق.
  2. ثم اضبط الخوادم الوكيلة ذات الصلة لتنتهي مهلتها عند ثلاث دقائق. حدِّد القيمة بالملي ثانية. مثال: <Property name="api.timeout">180000</Property>
  3. مع ذلك، يُرجى العلم أنّ رفع المهلات في النظام قد يؤدي إلى مشاكل في الأداء، لأنّ جميع الخوادم الوكيلة التي ليس لديها إعداد api.timeout تستخدم المهلات الجديدة لموازن التحميل والأعلى والموجه ومعالج الرسائل. لذلك، عليك ضبط الخوادم الوكيلة الأخرى لواجهة برمجة التطبيقات التي لا تتطلب مهلات أطول لاستخدام مهلات أقل. على سبيل المثال، يؤدي ما يلي إلى ضبط خادم وكيل لواجهة برمجة التطبيقات على انتهاء مهلة بعد دقيقة واحدة:
    <Property name="api.timeout">60000</Property>

لا يمكنك ضبط هذه السمة باستخدام متغيّر.

يمكن للعملاء أيضًا، الذين لا يمكنهم تعديل مهلات Edge، ضبط مهلة الخادم الوكيل لواجهة برمجة التطبيقات، ما دامت المهلة أقصر من المهلة العادية لمعالج رسائل Edge التي تبلغ 57 ثانية.

يمكنك الاطّلاع على إعدادات io.timeout.millis وapi.timeout في Edge لمزيد من المعلومات.

تعيين io.timeout.millis وapi.timeout لـ Edge

على Edge، يرتبط تشغيل io.timeout.millis وapi.timeout. في كل طلب إلى خادم وكيل لواجهة برمجة التطبيقات:

  1. يرسل جهاز التوجيه قيمة المهلة إلى معالج الرسائل. إنّ قيمة مهلة جهاز التوجيه هي إما قيمة proxy_read_timeout التي تم ضبطها من خلال المضيف الافتراضي الذي يعالج الطلب، أو قيمة المهلة التلقائية التي تبلغ 57 ثانية.
  2. بعد ذلك، يضبط معالج الرسائل api.timeout:
    1. إذا لم يتم ضبط api.timeout على مستوى الخادم الوكيل، عليك ضبطه على مهلة جهاز التوجيه.
    2. إذا تم ضبط api.timeout على مستوى الخادم الوكيل، اضبطه في "معالج الرسائل" على قيمة أقل في مهلة جهاز التوجيه أو على قيمة api.timeout.
  3. وتحدّد قيمة api.timeout الحد الأقصى لمقدار الوقت اللازم لتنفيذ الخادم الوكيل لواجهة برمجة التطبيقات من طلب واجهة برمجة التطبيقات إلى الاستجابة.

    بعد تنفيذ كل سياسة في الخادم الوكيل لواجهة برمجة التطبيقات، أو قبل أن يُرسِل "معالج الرسائل" الطلب إلى نقطة النهاية المستهدفة، يحتسب "معالج الرسائل" هذا الطلب (api.timeout - الوقت المنقضي من بداية الطلب). إذا كانت القيمة أقل من صفر، تنتهي صلاحية الحدّ الأقصى لمقدار الوقت اللازم لمعالجة الطلب وسيعرض "معالج الرسائل" رسالة 504.

  4. وتحدِّد قيمة io.timeout.millis الحد الأقصى لمقدار الوقت الذي يجب أن تستجيب فيه نقطة النهاية المستهدَفة.

    قبل الاتصال بنقطة نهاية مستهدفة، يحدّد "معالج الرسائل" القيمة الأقل بين (api.timeout - الوقت المنقضي من بداية الطلب) وio.timeout.millis. وبعد ذلك، يتم ضبط io.timeout.millis على هذه القيمة.

    • إذا انتهت المهلة أثناء كتابة طلب HTTP، سيتم عرض 408, Request Timeout.
    • إذا انتهت المهلة أثناء قراءة استجابة HTTP، سيتم عرض 504, Gateway Timeout.

لمحة عن ScriptTarget لتطبيقات Node.js

يُستخدم عنصر ScriptTarget لدمج تطبيق Node.js في الخادم الوكيل. للحصول على معلومات عن استخدام Node.js وScriptTarget، اطّلع على:

لمحة عن نقاط نهاية hostTarget

تطلب علامة <HostedTarget/> الفارغة من Edge استخدام تطبيق Node.js الذي يتم نشره في بيئة الأهداف المستضافة كهدف لها. لمعرفة التفاصيل، يُرجى الاطّلاع على نظرة عامة على الأهداف المستضافة.