פתרון בעיות בפריסת המדיניות בנושא 'חילוץ משתנים'

כרגע מוצג התיעוד של Apigee Edge.
כניסה למסמכי התיעוד של Apigee X.
מידע

NothingToExtract

הודעת השגיאה

כשפורסים את ה-API של ה-API דרך ממשק המשתמש של Edge או Edge management API, מוצגת הודעת השגיאה הבאה:

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, הפריסה של שרת ה-Proxy ל-API תיכשל כי לא יהיה מה לחלץ.

כפי שצוין בהודעת השגיאה, המדיניות בנושא משתני חילוץ חייבת לכלול לפחות אחד מהרכיבים הבאים במדיניות: URIPath, QueryParam, Header, FormParam, XMLPayload או JSONPayload.

אבחון

בודקים את המדיניות לחילוץ משתנים שמצוינת בהודעת השגיאה. אם המדיניות לא כוללת אף אחד מהרכיבים הבאים: URIPath, QueryParam, Header, FormParam, XMLPayload או JSONPayload, זו הסיבה לשגיאה. לדוגמה, המדיניות הבאה בנושא משתני חילוץ לא כוללת אף אחד מהרכיבים שצוינו למעלה:

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

מאחר שאף אחד מהאלמנטים הנדרשים לא קיים במדיניות חילוץ משתני, הפריסה של שרת ה-proxy של ה-API נכשלת.

רזולוציה

יש לוודא שהמדיניות לחילוץ משתנים כוללת לפחות אחד מרכיבי החובה הבאים: 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>

NONEmptyPrefixpedToEmptyURI

הודעת השגיאה

כשפורסים את ה-API של ה-API דרך ממשק המשתמש של Edge או Edge management API, מוצגת הודעת השגיאה הבאה:

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. יש לזהות את המדיניות לחילוץ משתנים שבה אירעה השגיאה ואת שם הקידומת. ניתן למצוא את שני הפריטים האלה בהודעת השגיאה. לדוגמה, בשגיאה הבאה , שם המדיניות הוא EV-XML-Age והקידומת היא apigee:

    ExtractVariables EV-XML-Age: Non-empty prefix apigee cannot be mapped to empty uri.
    
  2. ב-XML של המדיניות לחילוץ משתנים שנכשל, צריך לוודא ששם הקידומת שהוגדר ברכיב <Namespace> במסגרת הרכיב <XMLPayload> תואם לשם הקידומת שזוהה בהודעת השגיאה (שלב 1 למעלה). לדוגמה, המדיניות הבאה מציינת קידומת בשם 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> עם הקידומת הספציפית שזוהתה בשלב 2 יש URI חוקי. אם ה-URI חסר, זאת הסיבה לשגיאה.

    במדיניות לדוגמה של 'משתנים לחילוץ' שמוצגת למעלה, שימו לב שאין URI שתואם לרכיב <Namespace> עם הקידומת apigee. לכן, מתקבלת השגיאה:

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

רזולוציה

יש לוודא שלכל רכיבי <Namespace> שמוגדרים עם קידומת יש URI תואם במדיניות 'חילוץ משתנים'. לדוגמה:

<?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>

DuplicatePrefix

הודעת השגיאה

כשפורסים את ה-API של ה-API דרך ממשק המשתמש של Edge או Edge management API, מוצגת הודעת השגיאה הבאה:

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. יש לזהות את המדיניות לחילוץ משתנים שבה אירעה השגיאה ואת שם הקידומת. ניתן למצוא את שני הפריטים האלה בהודעת השגיאה. לדוגמה, בשגיאה הבאה, שם המדיניות הוא EV-XML-Age והקידומת היא apigee:

    ExtractVariables EV-XML-Age: Duplicate prefix apigee.
    
  2. ב-XML של המדיניות לחילוץ משתנים שנכשל, צריך לוודא ששם הקידומת שהוגדר ברכיב <Namespace> במסגרת הרכיב <XMLPayload> תואם לשם הקידומת שזוהה בהודעת השגיאה (שלב 1 למעלה). לדוגמה, המדיניות הבאה מציינת קידומת בשם 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> עם הקידומת הספציפית, שזוהה בשלב #2, הוגדר יותר מפעם אחת. אם היא מוגדרת יותר מפעם אחת, זאת הסיבה לשגיאה.

    במדיניות לדוגמה של חילוץ משתני שמוצגת למעלה, שימו לב שהרכיב <Namespace> עם הקידומת apigee הוגדר פעמיים. לכן, מתקבלת השגיאה:

    ExtractVariables EV-XML-Age: Duplicate prefix 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">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 של ה-API דרך ממשק המשתמש של Edge או Edge management API, מוצגת הודעת השגיאה הבאה:

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.

צילום מסך לדוגמה

סיבה

אם המדיניות בנושא משתני חילוץ לא כוללת את הרכיב <XPath> בתוך הרכיב <XMLPayload>, הפריסה של שרת ה-proxy של ה-API תיכשל ותופיע השגיאה שמוצגת למעלה.

אבחון

  1. יש לזהות את המדיניות לחילוץ משתנים שנכשלה בהודעת השגיאה. לדוגמה, בשגיאה הבאה, שם המדיניות הוא Extract-Variables-1:

    ExtractVariables Extract-Variables-1: no xpaths to evaluate in variable name.
    
  2. ב-XML של המדיניות לחילוץ משתנים שנכשל, בודקים אם יש רכיב <XMLPayload> ללא רכיב הצאצא <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">
            </Variable>
        </XMLPayload>
    </ExtractVariables>
    

    מאחר שלא קיים רכיב <XPath>, הפריסה של שרת ה-API מסוג שרת proxy תיכשל.

רזולוציה

צריך לוודא שבמדיניות לחילוץ משתנים מוגדר רכיב <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>

EmptyXPathExpression

הודעת השגיאה

כשפורסים את ה-API של ה-API דרך ממשק המשתמש של Edge או Edge management API, מוצגת הודעת השגיאה הבאה:

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>, הפריסה של שרת ה-proxy של ה-API תיכשל.

אבחון

  1. יש לזהות את המדיניות לחילוץ משתנים שנכשלה בהודעת השגיאה. לדוגמה, בשגיאה הבאה, שם המדיניות הוא Extract-Variables-1:

    ExtractVariables Extract-Variables-1: no xpaths to evaluate in variable name.
    
  2. ב-XML של המדיניות לחילוץ משתנים שנכשל, בודקים אם יש רכיב <XMLPayload> עם רכיב צאצא ריק של <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></XPath>
            </Variable>
        </XMLPayload>
    </ExtractVariables>
    

    מאחר שיש רכיב <XPath> ריק בתוך הרכיב <XMLPayload>, הפריסה של שרת ה-proxy של ממשק ה-API נכשלת.

רזולוציה

צריך לוודא שהמדיניות לחילוץ משתנים כוללת רכיב <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 של ה-API דרך ממשק המשתמש של Edge או Edge management API, מוצגת הודעת השגיאה הבאה:

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.

צילום מסך לדוגמה

סיבה

אם המדיניות בנושא משתני חילוץ לא כוללת את הרכיב <JSONPath> בתוך הרכיב <JSONPayload>, הפריסה של שרת ה-proxy של ה-API תיכשל ותופיע השגיאה שמוצגת למעלה.

אבחון

  1. יש לזהות את המדיניות לחילוץ משתנים שנכשלה בהודעת השגיאה. לדוגמה, בשגיאה הבאה, שם המדיניות הוא Extract-Variables-1:

    ExtractVariables Extract-Variables-1: no jsonpaths to evaluate in variable name.
    
  2. ב-XML של המדיניות לחילוץ משתנים שנכשל, בודקים אם יש רכיב <JSONPayload> ללא רכיב הצאצא הנדרש של <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">
            </Variable>
        </JSONPayload>
        <Source clearPayload="false">request</Source>
        <VariablePrefix>apigee</VariablePrefix>
    </ExtractVariables>
    

    לא הוגדר רכיב צאצא של <JSONPath> ברכיב <JSONPayload>, לכן הפריסה של שרת ה-proxy של ממשק ה-API נכשלת.

רזולוציה

צריך לוודא שבמדיניות לחילוץ משתנים מוגדר רכיב <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>

EmptyJSONPathExpression

הודעת השגיאה

כשפורסים את ה-API של ה-API דרך ממשק המשתמש של Edge או Edge management API, מוצגת הודעת השגיאה הבאה:

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.

צילום מסך לדוגמה

סיבה

אם במדיניות לחילוץ משתנים יש ביטוי <JSONPath> ריק בתוך הרכיב <JSONPayload>, הפריסה של שרת ה-proxy של ה-API תיכשל.

אבחון

  1. יש לזהות את המדיניות לחילוץ משתנים שנכשלה בהודעת השגיאה. לדוגמה, בשגיאה הבאה, שם המדיניות הוא Extract-Variables-1:

    ExtractVariables Extract-Variables-1: JSONPath expression is empty in variable name.
    
  2. ב-XML של המדיניות לחילוץ משתנים שנכשל, מוודאים שיש רכיב <JSONPayload> עם רכיב צאצא ריק של <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></JSONPath>
                </Variable>
            </JSONPayload>
            <Source clearPayload="false">request</Source>
            <VariablePrefix>apigee</VariablePrefix>
        </ExtractVariables>
    

    מאחר שיש רכיב <JSONPath> ריק בתוך הרכיב <JSONPayload>, הפריסה של שרת ה-proxy של ממשק ה-API נכשלת.

רזולוציה

צריך לוודא שהמדיניות לחילוץ משתנים כוללת רכיב <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>

MissingName

הודעת השגיאה

כשפורסים את ה-API של ה-API דרך ממשק המשתמש של Edge או Edge management API, מוצגת הודעת השגיאה הבאה:

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

צילום מסך לדוגמה

סיבה

אם המדיניות בנושא משתני חילוץ לא כוללת את המאפיין name באף אחד מרכיבי המדיניות כמו QueryParam, Header, FormParam או Variable, במקומות שבהם הוא נדרש, הפריסה של שרת ה-proxy של ה-API תיכשל.

לדוגמה, השגיאה הזו מתרחשת אם המאפיין name חסר ברכיב Variable.

אבחון

  1. צריך לציין את שם המדיניות לחילוץ משתנים שבה אירעה השגיאה ואת האלמנט שבו המאפיין 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 של המדיניות לחילוץ משתנים שנכשל, מוודאים שלכל הרכיבים עם השם שנקבע בשלב 1 שלמעלה יש מאפיין 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, ולכן הפריסה של שרת ה-proxy של ה-API נכשלת.

רזולוציה

יש לוודא שהמדיניות לחילוץ משתנים מכילה את מאפיין החובה 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>

PatternWithoutVariable

הודעת השגיאה

כשפורסים את ה-API של ה-API דרך ממשק המשתמש של Edge או Edge management API, מוצגת הודעת השגיאה הבאה:

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>, הפריסה של שרת ה-proxy של ה-API תיכשל. הרכיב <Pattern> מחייב את שם המשתנה שבו יישמרו הנתונים שחולצו.

אבחון

  1. יש לציין את שם המדיניות לחילוץ משתנים שבה אירעה השגיאה ואת הדפוס שבו המשתנה חסר. הפריטים האלה מופיעים בהודעת השגיאה. לדוגמה, בשגיאה הבאה, שם המדיניות הוא Extract-Variables-1 ושם הרכיב הוא /a/b:

    Pattern /a/b/ should have at least one variable in ExtractVariables stepDefinition ExtractVariables-1.
    
  2. ב-XML של המדיניות לחילוץ משתנים שנכשל, צריך לוודא שהדפוס שהוגדר ברכיב <Pattern> תואם לדפוס שצוין בהודעת השגיאה (שלב 1 למעלה). לדוגמה, המדיניות הבאה מציינת את הדפוס /a/b, שתואם לתוכן בהודעת השגיאה:

    לדוגמה, בהמשך מוצגת המדיניות בנושא חילוץ משתנים שכוללת שלושה רכיבי <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> שזוהה בשלב 2 אין משתנה. המשתנים צריכים להיות מוקפים בסוגריים מסולסלים. אם לדפוס אין משתנה, זאת הסיבה לשגיאה.

    הרכיב <Pattern> שהתבנית שלו /a/b לא כולל משתנה; לכן, הפריסה של שרת ה-API של ממשק ה-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>

CannotBeConvertedToNodeset

הודעת השגיאה

כשפורסים את ה-API של ה-API דרך ממשק המשתמש של Edge או Edge management API, מוצגת הודעת השגיאה הבאה:

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> מוגדר כצומת, אבל לא ניתן להמיר את הביטוי לקבוצת צמתים, הפריסה של שרת ה-proxy של ה-API תיכשל.

אבחון

  1. זיהוי המדיניות לחילוץ משתנים שבה אירעה השגיאה ואת ה-XPath שלא ניתן להמיר לצמתים לקבוצת צמתים. ניתן למצוא את שני הפריטים האלה בהודעת השגיאה. לדוגמה, בשגיאה הבאה , שם המדיניות הוא 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 של המדיניות לחילוץ משתנים שנכשל, צריך לוודא ש-XPath שהוגדר ברכיב <XPath> תואם ל-XPath שזוהה בהודעת השגיאה (שלב 1 למעלה). לדוגמה, המדיניות הבאה מציינת את בתור 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> שזוהה בשלב 2 למעלה. אם הסוג של <Variable> הוא nodeset, זו הסיבה לשגיאה.

    שימו לב שהביטוי <XPath> הוא 123 במדיניות לדוגמה של חילוץ משתני.

    <XPath>123</XPath>
    

    לא ניתן להמיר את הביטוי 123 לקבוצת צמתים. לכן הפריסה של שרת ה-API של שרת ה-proxy נכשלה.

רזולוציה

יש לוודא שניתן להמיר את הביטויים מסוג <XPath> שנמצאים בשימוש במדיניות חילוץ משתנים לקבוצת צמתים אם הסוג <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/>
    <Source clearPayload="false">request</Source>
    <VariablePrefix>visitor</VariablePrefix>
    <XMLPayload stopPayloadProcessing="false">
        <Namespaces/>
        <Variable name="age" type="nodeset">
            <XPath>/visitor/age</XPath>
        </Variable>
    </XMLPayload>
</ExtractVariables>

InvalidPattern

הודעת השגיאה

כשפורסים את ה-API של ה-API דרך ממשק המשתמש של Edge או Edge management API, מוצגת הודעת השגיאה הבאה:

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 במדיניות בנושא משתני חילוץ, הפריסה של שרת ה-proxy של ה-API תיכשל.

אבחון

  1. בהודעת השגיאה, מחפשים את המדיניות שנכשלה בנושא חילוץ משתנים. לדוגמה, בשגיאה הבאה, שם המדיניות הוא Extract-Variables-2:

    Pattern {*} is invalid in ExtractVariables stepDefinition ExtractVariables-2.
    
  2. ב-XML של המדיניות לחילוץ משתני שנכשל, בודקים אם אחד מהרכיבים האלה נמצא וכוללים רכיב <Pattern>: URIPath, QueryParam, Header, FormParam, XMLPayload או JSONPayload.

    לדוגמה, בהמשך מוצגת מדיניות לחילוץ משתנים עם רכיב <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> עם הגדרה לא חוקית, אז זה הגורם לשגיאה.

    במדיניות לדוגמה בנושא חילוץ משתני שמוצג למעלה, יש לשים לב שההגדרה של <Pattern> בתוך הרכיב <QueryParam> לא תקינה, ולכן הפריסה של שרת ה-proxy של ה-API נכשלה. למידע נוסף, ראו מידע על התאמה ועל יצירת משתנים

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

רזולוציה

צריך לוודא שהגדרת הרכיב <Pattern> בין הרכיבים URIPath, QueryParam, Header, FormParam, XMLPayload או JSONPayload במדיניות חילוץ משתנים. לדוגמה:

<?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 של שרת ה-proxy דרך ממשק המשתמש של Edge או דרך ממשק ה-API לניהול 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> אינם חלק ממרחבי השמות המוצהרים במדיניות חילוץ משתנים, הפריסה של שרת ה-proxy של ה-API תיכשל.

מידע נוסף על מרחבי שמות, XPath וקידומת זמין במאמר מרחבי שמות של XML ואיך הם משפיעים על XPath ו-XSLT.

אבחון

  1. יש לזהות את המדיניות לחילוץ משתנים שבה אירעה השגיאה ואת ה-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 של המדיניות לחילוץ משתנים שנכשל, צריך לוודא ש-XPath שהוגדר ברכיב <XPath> תואם ל-XPath שזוהה בהודעת השגיאה (שלב 1 למעלה). לדוגמה, המדיניות הבאה מציינת את בתור /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> במדיניות חילוץ משתנים. אם ה-<XPath> הספציפי שצוין בהודעת השגיאה משתמש בתחילית או בערך שאינם חלק ממרחבי השמות שהוצהרו במדיניות חילוץ משתנים, זו הסיבה לשגיאה.

    לתשומת ליבך, ה-<XPath> הספציפי משתמש בקידומת apigee במדיניות לדוגמה של חילוץ משתנים.

    <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>