عیب یابی خطای استقرار خط مشی متغیرها را استخراج کنید

شما در حال مشاهده مستندات Apigee Edge هستید.
به مستندات Apigee X مراجعه کنید .
اطلاعات

هیچ چیز برای استخراج

پیام خطا

استقرار پروکسی API از طریق رابط کاربری Edge یا رابط مدیریت Edge با این پیام خطا مواجه می‌شود:

Error Saving Revision [revision_number]
ExtractVariables [policy_name]: at least one of URIPath, QueryParam, Header, FormParam, XMLPayload, JSONPayload is mandatory. Revision:[revision_number]; APIProxy:[proxy_name]; Organization:[org_name]; Environment:[env_name].

مثال پیام خطا

Error Saving Revision 2
ExtractVariables EV-XML-Age: at least one of URIPath, QueryParam, Header, FormParam, XMLPayload, JSONPayload is mandatory.

مثال اسکرین شات

علت

اگر سیاست استخراج متغیرها هیچ یک از عناصر URIPath ، QueryParam ، Header ، FormParam ، XMLPayload یا JSONPayload را نداشته باشد، استقرار API Proxy با شکست مواجه می‌شود، زیرا چیزی برای استخراج وجود ندارد.

همانطور که در پیام خطا نشان داده شده است، سیاست Extract Variables باید حداقل یکی از این عناصر را در سیاست خود داشته باشد: URIPath ، QueryParam ، Header ، FormParam ، XMLPayload یا JSONPayload .

تشخیص

سیاست Extract Variables که در پیام خطا ذکر شده است را بررسی کنید. اگر این سیاست حتی یکی از عناصر زیر را نداشته باشد: URIPath ، QueryParam ، Header ، FormParam ، XMLPayload یا JSONPayload ، پس علت خطا همین است. برای مثال، سیاست Extract Variables زیر هیچ یک از عناصر ذکر شده در بالا را ندارد:

<ExtractVariables async="false" continueOnError="false" enabled="true" name="EV-XML-Age">
    <DisplayName>EV-XML-Age</DisplayName>
    <Properties/>
</ExtractVariables>

از آنجایی که هیچ یک از عناصر اجباری در خط‌مشی Extract Variables وجود ندارند، پیاده‌سازی پروکسی API با شکست مواجه می‌شود.

وضوح تصویر

مطمئن شوید که سیاست Extract Variables حداقل یکی از این عناصر اجباری را داشته باشد: URIPath ، QueryParam ، Header ، FormParam ، XMLPayload ، JSONPayload . برای مثال:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables async="false" continueOnError="false" enabled="true" name="EV-XML-Age">
  <DisplayName>EV-XML-Age</DisplayName>
  <Properties/>
  <Source>request</Source>
  <XMLPayload>
    <Namespaces/>
      <Variable name="age" type="integer">
          <XPath>/age</XPath>
      </Variable>
  </XMLPayload>
</ExtractVariables>

NONEmptyPrefixMappedToEmptyURI

پیام خطا

استقرار پروکسی API از طریق رابط کاربری Edge یا رابط مدیریت Edge با این پیام خطا مواجه می‌شود:

Error Saving Revision [revision_number]
ExtractVariables [policy_name]: Non-empty prefix [prefix_name] cannot be mapped to empty uri.

مثال پیام خطا

Error Saving Revision 3
ExtractVariables EV-XML-Age: Non-empty prefix apigee cannot be mapped to empty uri.

مثال اسکرین شات

علت

این خطا زمانی رخ می‌دهد که سیاست استخراج متغیرها دارای پیشوندی باشد که در عنصر <Namespace> زیر عنصر <XMLPayload> تعریف شده باشد، اما هیچ URI تعریف نشده باشد.

تشخیص

  1. خط‌مشی Extract Variables که خطا در آن رخ داده و نام پیشوند را مشخص کنید. می‌توانید هر دوی این موارد را در پیام خطا پیدا کنید. برای مثال، در خطای زیر، نام خط‌مشی EV-XML-Age و پیشوند apigee است:

    ExtractVariables EV-XML-Age: Non-empty prefix apigee cannot be mapped to empty uri.
    
  2. در XML مربوط به سیاست Extract Variables که با شکست مواجه شد، بررسی کنید که نام پیشوند تنظیم‌شده در عنصر <Namespace> زیر عنصر <XMLPayload> با نام پیشوند شناسایی‌شده در پیام خطا (مرحله ۱ بالا) مطابقت داشته باشد. برای مثال، سیاست زیر پیشوندی به نام apigee را در عنصر <Namespace> مشخص می‌کند که با آنچه در پیام خطا آمده است مطابقت دارد:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ExtractVariables async="false" continueOnError="false" enabled="true" name="EV-XML-Age">
        <DisplayName>EV-XML-Age</DisplayName>
        <Source clearPayload="false">request</Source>
        <XMLPayload stopPayloadProcessing="false">
          <Namespaces>
            <Namespace prefix="apigee"></Namespace>
            <Namespace prefix="gmail">http://mail.google.com</Namespace>
          </Namespaces>
        <Variable name="legName" type="string">
        <XPath>/apigee:Directions/apigee:route/apigee:leg/apigee:name</Xpath>
            </Variable>
        </XMLPayload>
    </ExtractVariables>
    
  3. اعتبارسنجی کنید که آیا عنصر <Namespace> با پیشوند خاص شناسایی شده در مرحله ۲، دارای یک URI معتبر است یا خیر. اگر URI وجود ندارد، علت خطا همین است.

    در مثال مربوط به سیاست Extract Variables که در بالا نشان داده شده است، توجه کنید که هیچ URI مربوط به عنصر <Namespace> با پیشوند apigee وجود ندارد؛ بنابراین، با خطای زیر مواجه می‌شوید:

    ExtractVariables EV-XML-Age: Non-empty prefix apigee cannot be mapped to empty uri.
    
    

وضوح تصویر

مطمئن شوید که تمام عناصر <Namespace> که با پیشوند تعریف شده‌اند، دارای یک URI متناظر در سیاست Extract Variables باشند. برای مثال:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables async="false" continueOnError="false" enabled="true" name="EV-XML-Age">
    <DisplayName>EV-XML-Age</DisplayName>
    <Source clearPayload="false">request</Source>
    <XMLPayload stopPayloadProcessing="false">
    <Namespaces>
        <Namespace prefix="apigee">http://www.apigee.com</Namespace>
        <Namespace prefix="gmail">http://mail.google.com</Namespace>
     </Namespaces>
    <Variable name="legName" type="string">
        <XPath>/apigee:Directions/apigee:route/apigee:leg/apigee:name</Xpath>
    </Variable>
    </XMLPayload>
</ExtractVariables>

پیشوند تکراری

پیام خطا

استقرار پروکسی API از طریق رابط کاربری Edge یا رابط مدیریت Edge با این پیام خطا مواجه می‌شود:

Error Saving Revision [revision_number]
ExtractVariables [policy_name]: Duplicate prefix [prefix_name].

مثال پیام خطا

Error Saving Revision 2
ExtractVariables EV-XML-Age: Duplicate prefix apigee.

مثال اسکرین شات

علت

این خطا زمانی رخ می‌دهد که پیشوند یکسانی در عنصر <Namespace> زیر عنصر <XMLPayload> در سیاست استخراج متغیرها، بیش از یک بار تعریف شده باشد.

برای مثال، این خطا به این دلیل رخ می‌دهد که پیشوند apigee دو بار تعریف شده است، همانطور که در زیر نشان داده شده است:

<Namespace prefix="apigee">http://www.apigee.com</Namespace>
<Namespace prefix="apigee">http://www.apigee.com</Namespace>

تشخیص

  1. خط‌مشی Extract Variables که خطا در آن رخ داده و نام پیشوند آن را مشخص کنید. می‌توانید هر دوی این موارد را در پیام خطا پیدا کنید. برای مثال، در خطای زیر، نام خط‌مشی EV-XML-Age و پیشوند آن apigee است:

    ExtractVariables EV-XML-Age: Duplicate prefix apigee.
    
  2. در XML مربوط به سیاست Extract Variables که با شکست مواجه شد، بررسی کنید که نام پیشوند تنظیم‌شده در عنصر <Namespace> زیر عنصر <XMLPayload> با نام پیشوند شناسایی‌شده در پیام خطا (مرحله ۱ بالا) مطابقت داشته باشد. برای مثال، سیاست زیر پیشوندی به نام apigee را در عنصر <Namespace> مشخص می‌کند که با آنچه در پیام خطا آمده است مطابقت دارد:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ExtractVariables async="false" continueOnError="false" enabled="true" name="EV-XML-Age">
        <DisplayName>EV-XML-Age</DisplayName>
        <Source clearPayload="false">request</Source>
        <XMLPayload stopPayloadProcessing="false">
          <Namespaces>
              <Namespace prefix="gmail">http://mail.google.com</Namespace>
              <Namespace prefix="apigee">http://www.apigee.com</Namespace>
              <Namespace prefix="apigee">http://www.apigee.com</Namespace>
          </Namespaces>
          <Variable name="legName" type="string
              <XPath>/apigee:Directions/apigee:route/apigee:leg/apigee:name</XPath>
          </Variable>
        </XMLPayload>
      </ExtractVariables>
    
  3. بررسی کنید که آیا عنصر <Namespace> با پیشوند خاص، که در مرحله ۲ مشخص شد، بیش از یک بار تعریف شده است یا خیر. اگر بیش از یک بار تعریف شده باشد، علت خطا همین است.

    در مثال مربوط به سیاست Extract Variables که در بالا نشان داده شده است، توجه کنید که عنصر <Namespace> با پیشوند apigee دو بار تعریف شده است؛ بنابراین، با خطای زیر مواجه می‌شوید:

    ExtractVariables EV-XML-Age: Duplicate prefix apigee.
    
    

وضوح تصویر

مطمئن شوید که برای هر پیشوند در عناصر <Namespace> در سیاست Extract Variables فقط یک تعریف وجود دارد. برای مثال:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables async="false" continueOnError="false" enabled="true" name="EV-XML-Age">
    <DisplayName>EV-XML-Age</DisplayName>
    <Source clearPayload="false">request</Source>
    <XMLPayload stopPayloadProcessing="false">
      <Namespaces>
          <Namespace prefix="apigee">http://www.apigee.com</Namespace>
          <Namespace prefix="gmail">http://mail.google.com</Namespace>
      </Namespaces>
      <Variable name="legName" type="string">
          <XPath>/apigee:Directions/apigee:route/apigee:leg/apigee:name</Xpath>
      </Variable>
    </XMLPayload>
</ExtractVariables>

NoXPathsToEvaluate

پیام خطا

استقرار پروکسی API از طریق رابط کاربری Edge یا رابط مدیریت Edge با این پیام خطا مواجه می‌شود:

Error Saving Revision [revision_number]
ExtractVariables [policy_name]:no xpaths to evaluate in variable name.

مثال پیام خطا

Error Saving Revision 4
ExtractVariables Extract-Variables-1: no xpaths to evaluate in variable name.

مثال اسکرین شات

علت

اگر سیاست استخراج متغیرها (Extract Variables Policy) عنصر <XPath> را در عنصر <XMLPayload> نداشته باشد، پیاده‌سازی پروکسی API با خطای نشان داده شده در بالا با شکست مواجه می‌شود.

تشخیص

  1. از روی پیام خطا، خط‌مشی Extract Variables ناموفق را شناسایی کنید. برای مثال، در خطای زیر، نام خط‌مشی Extract-Variables-1 است:

    ExtractVariables Extract-Variables-1: no xpaths to evaluate in variable name.
    
  2. در XML مربوط به Extract Variables policy که با شکست مواجه شده است، بررسی کنید که آیا عنصر <XMLPayload> بدون عنصر فرزند <XPath> وجود دارد یا خیر. اگر چنین است، پس علت خطا همین است.

    برای مثال، در اینجا یک سیاست Extract Variables وجود دارد که دارای عنصر <XMLPayload> است:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
        <DisplayName>Extract Variables-1</DisplayName>
        <Properties/>
        <Source clearPayload="false">request</Source>
        <VariablePrefix>apigee</VariablePrefix>
        <XMLPayload stopPayloadProcessing="false">
            <Namespaces/>
            <Variable name="HostReachable" type="boolean">
            </Variable>
        </XMLPayload>
    </ExtractVariables>
    

    از آنجا که هیچ عنصر <XPath> وجود ندارد، استقرار API Proxy با شکست مواجه می‌شود.

وضوح تصویر

مطمئن شوید که سیاست Extract Variables دارای یک عنصر <XPath> است که زیر عنصر <XMLPayload> تعریف شده است. برای مثال:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
    <DisplayName>Extract Variables-1</DisplayName>
    <Properties/>
    <Source clearPayload="false">request</Source>
    <VariablePrefix>apigee</VariablePrefix>
    <XMLPayload stopPayloadProcessing="false">
        <Namespaces/>
        <Variable name="HostReachable" type="boolean">
            <XPath>/isReachable</XPath>
        </Variable>
    </XMLPayload>
</ExtractVariables>

عبارت EmptyXPath

پیام خطا

استقرار پروکسی API از طریق رابط کاربری Edge یا رابط مدیریت Edge با این پیام خطا مواجه می‌شود:

Error Saving Revision [revision_number]
ExtractVariables [policy_name]: XPath expression is empty in variable name.

مثال پیام خطا

Error Saving Revision 6
ExtractVariables Extract-Variables-1: XPath expression is empty in variable name.

مثال اسکرین شات

علت

اگر سیاست استخراج متغیرها دارای عبارت خالی <XPath> در عنصر <XMLPayload> باشد، پیاده‌سازی پروکسی API با شکست مواجه می‌شود.

تشخیص

  1. از روی پیام خطا، خط‌مشی Extract Variables ناموفق را شناسایی کنید. برای مثال، در خطای زیر، نام خط‌مشی Extract-Variables-1 است:

    ExtractVariables Extract-Variables-1: no xpaths to evaluate in variable name.
    
  2. در XML مربوط به Extract Variables policy که با شکست مواجه شده است، بررسی کنید که آیا عنصر <XMLPayload> با عنصر فرزند خالی <XPath> وجود دارد یا خیر. اگر چنین است، پس علت خطا همین است.

    برای مثال، در اینجا یک سیاست Extract Variables وجود دارد که دارای عنصر <XMLPayload> است:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
        <DisplayName>Extract Variables-1</DisplayName>
        <Properties/>
        <Source clearPayload="false">request</Source>
        <VariablePrefix>apigee</VariablePrefix>
        <XMLPayload stopPayloadProcessing="false">
            <Namespaces/>
            <Variable name="address" type="string">
                <XPath></XPath>
            </Variable>
        </XMLPayload>
    </ExtractVariables>
    

    از آنجا که یک عنصر خالی <XPath> درون عنصر <XMLPayload> وجود دارد، پیاده‌سازی API Proxy با شکست مواجه می‌شود.

وضوح تصویر

مطمئن شوید که سیاست Extract Variables دارای یک عنصر <XPath> غیر خالی و معتبر است که زیر عنصر <XMLPayload> تعریف شده است. برای مثال:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
    <DisplayName>Extract Variables-1</DisplayName>
    <Properties/>
    <Source clearPayload="false">request</Source>
    <VariablePrefix>apigee</VariablePrefix>
    <XMLPayload stopPayloadProcessing="false">
        <Namespaces/>
        <Variable name="address" type="string">
            <XPath>/address</XPath>
        </Variable>
    </XMLPayload>
</ExtractVariables>

NoJSONPathsToEvaluate

پیام خطا

استقرار پروکسی API از طریق رابط کاربری Edge یا رابط مدیریت Edge با این پیام خطا مواجه می‌شود:

Error Saving Revision [revision_number]
ExtractVariables [policy_name]:no jsonpaths to evaluate in variable name.

مثال پیام خطا

Error Saving Revision 6
ExtractVariables Extract-Variables-1: no jsonpaths to evaluate in variable name.

مثال اسکرین شات

علت

اگر سیاست استخراج متغیرها (Extract Variables Policy) عنصر <JSONPath> را درون عنصر <JSONPayload> نداشته باشد، پیاده‌سازی پروکسی API با خطای نشان داده شده در بالا با شکست مواجه می‌شود.

تشخیص

  1. از روی پیام خطا، خط‌مشی Extract Variables ناموفق را شناسایی کنید. برای مثال، در خطای زیر، نام خط‌مشی Extract-Variables-1 است:

    ExtractVariables Extract-Variables-1: no jsonpaths to evaluate in variable name.
    
  2. در XML مربوط به Extract Variables policy که با شکست مواجه شده است، بررسی کنید که آیا عنصر <JSONPayload> بدون عنصر فرزند مورد نیاز <JSONPath> وجود دارد یا خیر. اگر چنین است، پس علت خطا همین است.

    برای مثال، در اینجا یک سیاست Extract Variables وجود دارد که دارای عنصر <JSONPayload> است:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
        <DisplayName>Extract Variables-1</DisplayName>
        <Properties/>
        <JSONPayload>
            <Variable name="title">
            </Variable>
        </JSONPayload>
        <Source clearPayload="false">request</Source>
        <VariablePrefix>apigee</VariablePrefix>
    </ExtractVariables>
    

    از آنجا که هیچ عنصر فرزند <JSONPath> زیر عنصر <JSONPayload> تعریف نشده است، پیاده‌سازی API Proxy با شکست مواجه می‌شود.

وضوح تصویر

مطمئن شوید که سیاست Extract Variables دارای یک عنصر <JSONPath> است که زیر عنصر <JSONPayload> تعریف شده است. برای مثال:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
    <DisplayName>Extract Variables-1</DisplayName>
    <Properties/>
    <JSONPayload>
        <Variable name="title">
            <JSONPath>$.book.title</JSONPath>
        </Variable>
    </JSONPayload>
    <Source clearPayload="false">request</Source>
    <VariablePrefix>apigee</VariablePrefix>
</ExtractVariables>

عبارت مسیر JSON خالی

پیام خطا

استقرار پروکسی API از طریق رابط کاربری Edge یا رابط مدیریت Edge با این پیام خطا مواجه می‌شود:

Error Saving Revision [revision_number]
ExtractVariables [policy_name]: JSONPath expression is empty in variable name.

مثال پیام خطا

Error Saving Revision 6
ExtractVariables Extract-Variables-1: JSONPath expression is empty in variable name.

مثال اسکرین شات

علت

اگر سیاست استخراج متغیرها (Extract Variables Policy) دارای عبارت خالی <JSONPath> در عنصر <JSONPayload> باشد، پیاده‌سازی پروکسی API با شکست مواجه می‌شود.

تشخیص

  1. از روی پیام خطا، خط‌مشی Extract Variables ناموفق را شناسایی کنید. برای مثال، در خطای زیر، نام خط‌مشی Extract-Variables-1 است:

    ExtractVariables Extract-Variables-1: JSONPath expression is empty in variable name.
    
  2. در XML مربوط به Extract Variables policy که با شکست مواجه شده است، بررسی کنید که آیا عنصر <JSONPayload> با عنصر فرزند خالی <JSONPath> وجود دارد یا خیر. اگر چنین است، پس علت خطا همین است.

    برای مثال، در اینجا یک سیاست Extract Variables وجود دارد که دارای عنصر <JSONPayload> است:

        <ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
            <DisplayName>Extract Variables-1</DisplayName>
            <Properties/>
            <JSONPayload>
                <Variable name="account_number" type="integer">
                    <JSONPath></JSONPath>
                </Variable>
            </JSONPayload>
            <Source clearPayload="false">request</Source>
            <VariablePrefix>apigee</VariablePrefix>
        </ExtractVariables>
    

    از آنجا که یک عنصر خالی <JSONPath> درون عنصر <JSONPayload> وجود دارد، پیاده‌سازی API Proxy با شکست مواجه می‌شود.

وضوح تصویر

مطمئن شوید که سیاست Extract Variables دارای یک عنصر <JSONPath> غیر خالی و معتبر است که زیر عنصر <JSONPayload> تعریف شده است. برای مثال:

<ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
    <DisplayName>Extract Variables-1</DisplayName>
    <Properties/>
    <JSONPayload>
        <Variable name="account_number" type="integer">
           <JSONPath>$.account.number</JSONPath>
        </Variable>
    </JSONPayload>
    <Source clearPayload="false">request</Source>
    <VariablePrefix>apigee</VariablePrefix>
</ExtractVariables>

نام گمشده

پیام خطا

استقرار پروکسی API از طریق رابط کاربری Edge یا رابط مدیریت Edge با این پیام خطا مواجه می‌شود:

Error Saving Revision [revision_number]
Error occurred while validation of bean [policy_name].xml Reason: - Required attribute name is missing in [element_name]

مثال پیام خطا

Error Saving Revision 6
Error occurred while validation of bean Extract-Variables-1.xml. Reason: - Required attribute name is missing in Variable

مثال اسکرین شات

علت

اگر سیاست استخراج متغیرها، در هر یک از عناصر سیاست مانند QueryParam ، Header ، FormParam یا Variable ، در صورت لزوم، ویژگی name را نداشته باشد، استقرار پروکسی API با شکست مواجه می‌شود.

برای مثال، این خطا زمانی رخ می‌دهد که ویژگی name در یک عنصر Variable وجود نداشته باشد.

تشخیص

  1. نام سیاست Extract Variables که در آن خطا رخ داده و عنصری که ویژگی name در آن وجود ندارد را شناسایی کنید. می‌توانید این موارد را در پیام خطا پیدا کنید. برای مثال، در خطای زیر، نام سیاست Extract-Variables-1 و نام عنصر Variable است:

    Error occurred while validation of bean Extract-Variables-1.xml. Reason: - Required attribute name is missing in Variable
    
  2. در فایل XML مربوط به Extract Variables policy که با شکست مواجه شد، بررسی کنید که آیا تمام عناصری که نامشان از مرحله ۱ بالا تعیین شده، دارای ویژگی name هستند یا خیر. اگر عنصری وجود دارد که ویژگی name آن وجود ندارد، علت خطا همین است.

    برای مثال، سیاست استخراج متغیرها در زیر عنصر <Variable> را تعریف کرده است:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
        <DisplayName>Extract Variables-1</DisplayName>
        <Properties/>
        <Variable type="boolean">
            <Pattern>{isAccountActive}</Pattern>
        </Variable>
    </ExtractVariables>
    

    توجه داشته باشید که ویژگی name در عنصر Variable وجود ندارد، بنابراین استقرار API Proxy با شکست مواجه می‌شود.

وضوح تصویر

مطمئن شوید که سیاست استخراج متغیرها (Extract Variables Policy) شامل ویژگی name مورد نیاز برای عناصر QueryParam ، Header ، FormParam یا Variable باشد. برای مثال:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
    <DisplayName>Extract Variables-1</DisplayName>
    <Properties/>
    <Variable name="account_active" type="boolean">
        <Pattern>{isAccountActive}</Pattern>
    </Variable>
</ExtractVariables>

الگو بدون متغیر

پیام خطا

استقرار پروکسی API از طریق رابط کاربری Edge یا رابط مدیریت Edge با این پیام خطا مواجه می‌شود:

Error Saving Revision [revision_number]
Pattern [pattern] should have at least one variable in ExtractVariables stepDefinition [policy_name]

مثال پیام خطا

Error Saving Revision 7
Pattern /a/b/ should have at least one variable in ExtractVariables stepDefinition ExtractVariables-1.

مثال اسکرین شات

علت

اگر سیاست استخراج متغیرها، متغیری را در عنصر <Pattern> مشخص نکرده باشد، پیاده‌سازی پروکسی API با شکست مواجه می‌شود. عنصر <Pattern> به نام متغیری که داده‌های استخراج‌شده در آن ذخیره می‌شوند، نیاز دارد.

تشخیص

  1. نام سیاست Extract Variables که خطا در آن رخ داده و الگویی که متغیر برای آن وجود ندارد را شناسایی کنید. می‌توانید این موارد را از پیام خطا پیدا کنید. برای مثال، در خطای زیر، نام سیاست Extract-Variables-1 و نام عنصر /a/b است:

    Pattern /a/b/ should have at least one variable in ExtractVariables stepDefinition ExtractVariables-1.
    
  2. در سیاست XML مربوط به Extract Variables که با شکست مواجه شد، بررسی کنید که الگوی تنظیم شده در عنصر <Pattern> با الگوی شناسایی شده در پیام خطا (مرحله ۱ در بالا) مطابقت داشته باشد. برای مثال، سیاست زیر الگوی /a/b را مشخص می‌کند که با آنچه در پیام خطا آمده است مطابقت دارد:

    برای مثال، در اینجا یک سیاست Extract Variables وجود دارد که دارای سه عنصر <Pattern> است:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ExtractVariables name="ExtractVariables-1">
       <Source>request</Source>
       <URIPath>
          <Pattern ignoreCase="true">/a/{pathSeg}</Pattern>
          <Pattern ignoreCase="true">/a/b/</Pattern>
          <Pattern ignoreCase="true">/a/b/c/{pathSeg}</Pattern>
       </URIPath>
       <VariablePrefix>urirequest</VariablePrefix>
    </ExtractVariables>
    
  3. بررسی کنید که آیا عنصر <Pattern> که در مرحله ۲ شناسایی شد، متغیر ندارد یا خیر. متغیرها باید داخل آکولاد قرار گیرند. اگر الگو متغیر نداشته باشد، علت خطا همین است.

    عنصر <Pattern> که دارای الگوی /a/b است، شامل متغیری نمی‌شود؛ بنابراین، پیاده‌سازی پروکسی API با شکست مواجه می‌شود.

    <Pattern ignoreCase="true">/a/b/</Pattern>
    
    

وضوح تصویر

مطمئن شوید که هر عنصر <Pattern> شامل یک متغیر (نامی که درون آکولاد قرار گرفته است) باشد. برای مثال:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables name="ExtractVariables-1">
   <Source>request</Source>
   <URIPath>
      <Pattern ignoreCase="true">/a/{pathSeg}</Pattern>
      <Pattern ignoreCase="true">/a/b/{pathSeg}</Pattern>
      <Pattern ignoreCase="true">/a/b/c/{pathSeg}</Pattern>
   </URIPath>
   <VariablePrefix>urirequest</VariablePrefix>
</ExtractVariables>

CannotBeConvertToNodeset

پیام خطا

استقرار پروکسی API از طریق رابط کاربری Edge یا رابط مدیریت Edge با این پیام خطا مواجه می‌شود:

Error Deploying Revision [revision_number]
ExtractVariables [policy_name]: Result of xpath [policy_name] cannot be converted to nodeset. Context Revision:[revision_number]; APIProxy:[proxy_name]; Organization:[org_name]; Environment:[env_name].

مثال پیام خطا

Error Deploying Revision 4 to test
ExtractVariables Extract-Variables-1: Result of xpath 123 cannot be converted to nodeset. Context Revision:4;APIProxy:EV-XML;Organization:aprabhashankar-eval;Environment:test.

مثال اسکرین شات

علت

اگر سیاست استخراج متغیرها دارای عبارت <XPath> باشد که در آن نوع <Variable> به صورت nodeset تعریف شده باشد، اما این عبارت را نتوان به nodeset تبدیل کرد، در این صورت پیاده‌سازی پروکسی API با شکست مواجه می‌شود.

تشخیص

  1. خط‌مشی Extract Variables که خطا در آن رخ داده و XPath که قابل تبدیل به nodeset نیست را شناسایی کنید. می‌توانید هر دوی این موارد را در پیام خطا پیدا کنید. برای مثال، در خطای زیر، نام خط‌مشی Extract-Variables-1 و XPath 123 است.

    ExtractVariables Extract-Variables-1: Result of xpath 123 cannot be converted to nodeset. Context Revision:4;APIProxy:EV-XML;Organization:aprabhashankar-eval;Environment:test.
    
  2. در XML مربوط به سیاست Extract Variables که با شکست مواجه شده است، بررسی کنید که XPath تنظیم شده در عنصر <XPath> با XPath شناسایی شده در پیام خطا (مرحله ۱ در بالا) مطابقت داشته باشد. به عنوان مثال، سیاست زیر مشخص می‌کند که به عنوان 123 ، که با آنچه در پیام خطا آمده است مطابقت دارد:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
        <DisplayName>Extract Variables-1</DisplayName>
        <Properties/>
        <Source clearPayload="false">request</Source>
        <VariablePrefix>visitor</VariablePrefix>
        <XMLPayload stopPayloadProcessing="false">
            <Namespaces/>
            <Variable name="age" type="nodeset">
                <XPath>123</XPath>
            </Variable>
        </XMLPayload>
    </ExtractVariables>
    
  3. نوع عنصر <Variable> مربوط به <XPath> شناسایی شده در مرحله ۲ بالا را بررسی کنید. اگر نوع <Variable> nodeset باشد، علت خطا همین است.

    توجه داشته باشید که عبارت <XPath> در مثال مربوط به سیاست Extract Variables 123 است.

    <XPath>123</XPath>
    

    عبارت 123 را نمی‌توان به nodeset تبدیل کرد. بنابراین، پیاده‌سازی API Proxy با شکست مواجه می‌شود.

وضوح تصویر

مطمئن شوید که عبارات <XPath> استفاده شده در سیاست Extract Variables در صورتی که نوع <Variable> به صورت nodeset تعریف شده باشد، می‌توانند به nodeset تبدیل شوند. برای مثال:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
    <DisplayName>Extract Variables-1</DisplayName>
    <Properties/>
    <Source clearPayload="false">request</Source>
    <VariablePrefix>visitor</VariablePrefix>
    <XMLPayload stopPayloadProcessing="false">
        <Namespaces/>
        <Variable name="age" type="nodeset">
            <XPath>/visitor/age</XPath>
        </Variable>
    </XMLPayload>
</ExtractVariables>

الگوی نامعتبر

پیام خطا

استقرار پروکسی API از طریق رابط کاربری Edge یا رابط مدیریت Edge با این پیام خطا مواجه می‌شود:

Error Deploying Revision [revision_number]
Pattern [pattern] is invalid in ExtractVariables stepDefinition [policy_name]

مثال پیام خطا

Error Deploying Revision 18 to test
Pattern {*} is invalid in ExtractVariables stepDefinition ExtractVariables-2.

مثال اسکرین شات

علت

اگر تعریف عنصر <Pattern> در هر یک از عناصر مانند URIPath ، QueryParam ، Header ، FormParam ، XMLPayload یا JSONPayload در Extract Variables Policy نامعتبر باشد، پیاده‌سازی پروکسی API با شکست مواجه می‌شود.

تشخیص

  1. از روی پیام خطا، خط‌مشی Extract Variables ناموفق را شناسایی کنید. برای مثال، در خطای زیر، نام خط‌مشی Extract-Variables-2 است:

    Pattern {*} is invalid in ExtractVariables stepDefinition ExtractVariables-2.
    
  2. در XML مربوط به Extract Variables policy که با شکست مواجه شد، بررسی کنید که آیا هر یک از این عناصر وجود دارند و یک عنصر <Pattern> را نیز لحاظ کنید: URIPath ، QueryParam ، Header ، FormParam ، XMLPayload یا JSONPayload .

    برای مثال، در اینجا یک مثال از سیاست Extract Variables با یک عنصر <Pattern> درون عنصر <QueryParam> آورده شده است:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ExtractVariables name="ExtractVariables-2">
        <DisplayName>ExtractVariables-2</DisplayName>
        <Source>request</Source>
        <QueryParam name="code">
            <Pattern ignoreCase="true">{*}</Pattern>
        </QueryParam>
        <VariablePrefix>queryinfo</VariablePrefix>
    </ExtractVariables>
    
  3. تعریف هر یک از عناصر <Pattern> را بررسی کنید. اگر عنصری <Pattern> با تعریف نامعتبر وجود داشته باشد، علت خطا همان است.

    در مثال مربوط به سیاست Extract Variables که در بالا نشان داده شده است، توجه داشته باشید که تعریف <Pattern> در عنصر <QueryParam> نامعتبر است؛ بنابراین، استقرار API Proxy با شکست مواجه می‌شود. همچنین به بخش «درباره تطبیق و ایجاد متغیر» مراجعه کنید.

    <Pattern ignoreCase="true">{*}</Pattern>
    
    

وضوح تصویر

مطمئن شوید که تعریف عنصر <Pattern> درون عناصر URIPath ، QueryParam ، Header ، FormParam ، XMLPayload یا JSONPayload در سیاست Extract Variables معتبر است. برای مثال:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables name="ExtractVariables-2">
    <DisplayName>Extract a value from a query parameter</DisplayName>
    <Source>request</Source>
    <QueryParam name="code">
        <Pattern ignoreCase="true">{code}</Pattern>
    </QueryParam>
    <VariablePrefix>queryinfo</VariablePrefix>
</ExtractVariables>

همچنین ببینید درباره تطبیق و ایجاد متغیر

XPathCompilationFailed

پیام خطا

استقرار پروکسی API از طریق رابط کاربری Edge یا رابط مدیریت Edge با این پیام خطا مواجه می‌شود:

Error Deploying Revision [revision_number]
ExtractVariables [policy_name]: Failed to compile xpath [xpath] Context Revision:[revision_number]; APIProxy:[proxy_name]; Organization:[org_name]; Environment:[env_name].

مثال پیام خطا

Error Deploying Revision 1 to test
ExtractVariables EV-XML-Age: Failed to compile xpath /apigee:Directions/apigee:route/apigee:leg/apigee:name. Context Revision:1;APIProxy:EV-XML;Organization:aprabhashankar-eval;Environment:test.

مثال اسکرین شات

علت

اگر پیشوند یا مقدار استفاده شده در عنصر <XPath> بخشی از هیچ یک از فضاهای نام اعلام شده در سیاست استخراج متغیرها نباشد، استقرار پروکسی API با شکست مواجه می‌شود.

می‌توانید اطلاعات بیشتری در مورد فضاهای نام، XPath و پیشوند را در بخش فضاهای نام XML و نحوه تأثیر آنها بر XPath و XSLT بیابید.

تشخیص

  1. خط‌مشی Extract Variables را که خطا در آن رخ داده و XPath که کامپایل نشده است، شناسایی کنید. می‌توانید هر دوی این موارد را در پیام خطا پیدا کنید. برای مثال، در خطای زیر، نام خط‌مشی EV-XML-Age و xpath آن /apigee:Directions/apigee:route/apigee:leg/apigee:name .

    ExtractVariables EV-XML-Age: Failed to compile xpath /apigee:Directions/apigee:route/apigee:leg/apigee:name. Context Revision:1;APIProxy:EV-XML;Organization:aprabhashankar-eval;Environment:test.
    
  2. در XML مربوط به سیاست Extract Variables که با شکست مواجه شده است، بررسی کنید که XPath تنظیم شده در عنصر <XPath> با XPath شناسایی شده در پیام خطا (مرحله ۱ در بالا) مطابقت داشته باشد. به عنوان مثال، سیاست زیر مشخص می‌کند که به صورت /apigee:Directions/apigee:route/apigee:leg/apigee:name که با آنچه در پیام خطا آمده است مطابقت دارد:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ExtractVariables async="false" continueOnError="false" enabled="true" name="EV-XML-Age">
      <DisplayName>EV-XML-Age</DisplayName>
      <Source clearPayload="false">request</Source>
      <XMLPayload stopPayloadProcessing="false">
        <Namespaces>
            <Namespace prefix="gmail">http://mail.google.com</Namespace>
        </Namespaces>
        <Variable name="legName" type="string">
        <XPath>/apigee:Directions/apigee:route/apigee:leg/apigee:name</XPath>
            </Variable>
      </XMLPayload>
    </ExtractVariables>
    
  3. عناصر <Namespaces> و <XPath> را در سیاست Extract Variables بررسی کنید. اگر <XPath> خاص نشان داده شده در پیام خطا از پیشوند یا مقداری استفاده می‌کند که بخشی از فضاهای نام اعلام شده در سیاست Extract Variables نیست، پس علت خطا همین است.

    توجه داشته باشید که <XPath> خاص از پیشوند apigee در سیاست Extract Variables مثال استفاده می‌کند.

    <XPath>/apigee:Directions/apigee:route/apigee:leg/apigee:name</XPath>
    

    با این حال، پیشوند apigee در هیچ یک از عناصر <Namespace> تعریف نشده است؛ بنابراین، کامپایل <XPath> با شکست مواجه می‌شود و منجر به عدم موفقیت در پیاده‌سازی می‌گردد.

وضوح تصویر

مطمئن شوید که تمام فضاهای نامی که در عناصر <XPath> استفاده می‌شوند، در سیاست استخراج متغیرها تعریف شده‌اند. برای مثال:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables async="false" continueOnError="false" enabled="true" name="EV-XML-Age">
  <DisplayName>EV-XML-Age</DisplayName>
  <Source clearPayload="false">request</Source>
  <XMLPayload stopPayloadProcessing="false">
    <Namespaces>
        <Namespace prefix="apigee">http://www.apigee.com</Namespace>
        <Namespace prefix="gmail">http://mail.google.com</Namespace>
    </Namespaces>
    <Variable name="legName" type="string">
        <XPath>/apigee:Directions/apigee:route/apigee:leg/apigee:name</XPath>
    </Variable>
  </XMLPayload>
</ExtractVariables>