פתרון בעיות בפריסה של מדיניות Extract Variables

אתם צופים במסמכי התיעוד של Apigee Edge.
כדאי לעיין במסמכי התיעוד של Apigee X.
מידע

NothingToExtract

הודעת שגיאה

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

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

סיבה

אם למדיניות Extract Variables (חילוץ משתנים) אין אף אחד מהרכיבים 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, הפריסה של proxy ל-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

הודעת שגיאה

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

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

סיבה

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

    בדוגמה של מדיניות 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>

DuplicatePrefix

הודעת שגיאה

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

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

סיבה

השגיאה הזו מתרחשת אם לאותו קידומת מוגדרים יותר מפעם אחת ב-Extract Variables Policy ברכיב <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> זהה לשם הקידומת שזוהה בהודעת השגיאה (שלב 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 הוגדר יותר מפעם אחת. אם הוא מוגדר יותר מפעם אחת, זו הסיבה לשגיאה.

    בדוגמה של מדיניות 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

הודעת שגיאה

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

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

סיבה

אם לרכיב Extract Variables Policy אין את הרכיב <XPath> בתוך הרכיב <XMLPayload>, פריסת ה-proxy ל-API תיכשל ותוצג השגיאה שמופיעה למעלה.

אבחון

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

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

    הפריסה של ה-API Proxy נכשלת כי אין רכיב <XPath>.

רזולוציה

מוודאים שהרכיב 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>

EmptyXPathExpression

הודעת שגיאה

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

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

סיבה

אם מדיניות Extract Variables (חילוץ משתנים) כוללת ביטוי <XPath> ריק ברכיב <XMLPayload>, הפריסה של proxy ל-API נכשלת.

אבחון

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

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

    פריסת ה-API Proxy נכשלת כי יש אלמנט <XPath> ריק בתוך האלמנט <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>/address</XPath>
        </Variable>
    </XMLPayload>
</ExtractVariables>

NoJSONPathsToEvaluate

הודעת שגיאה

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

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

סיבה

אם לרכיב Extract Variables Policy אין את הרכיב <JSONPath> בתוך הרכיב <JSONPayload>, פריסת ה-proxy ל-API תיכשל ותוצג השגיאה שמופיעה למעלה.

אבחון

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

    ExtractVariables Extract-Variables-1: no jsonpaths to evaluate in variable name.
    
  2. ב-XML של מדיניות Extract Variables שנכשל, בודקים אם יש אלמנט <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>
    

    הפריסה של ה-API Proxy נכשלת כי לא מוגדר רכיב צאצא <JSONPath> מתחת לרכיב <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">
            <JSONPath>$.book.title</JSONPath>
        </Variable>
    </JSONPayload>
    <Source clearPayload="false">request</Source>
    <VariablePrefix>apigee</VariablePrefix>
</ExtractVariables>

EmptyJSONPathExpression

הודעת שגיאה

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

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

סיבה

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

אבחון

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

    ExtractVariables Extract-Variables-1: JSONPath expression is empty in variable name.
    
  2. בקובץ ה-XML של מדיניות Extract Variables שנכשל, בודקים אם יש רכיב <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>
    

    פריסת ה-API Proxy נכשלת כי יש אלמנט <JSONPath> ריק בתוך האלמנט <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>$.account.number</JSONPath>
        </Variable>
    </JSONPayload>
    <Source clearPayload="false">request</Source>
    <VariablePrefix>apigee</VariablePrefix>
</ExtractVariables>

MissingName

הודעת שגיאה

פריסת ה-proxy ל-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

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

סיבה

אם למדיניות Extract Variables אין את המאפיין name באף אחד מרכיבי המדיניות כמו QueryParam, ‏ Header, ‏ FormParam או Variable, במקומות שבהם הוא נדרש, פריסת ה-proxy ל-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 שנכשל, בודקים שלכל הרכיבים עם השם שנקבע בשלב 1 למעלה יש מאפיין name. אם יש אלמנט שחסר בו מאפיין השם, זו הסיבה לשגיאה.

    לדוגמה, לרכיב <Variable> מוגדרת מדיניות Extract Variables (חילוץ משתנים):

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

הודעת שגיאה

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

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

סיבה

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

    הרכיב <Pattern> עם התבנית /a/b לא כולל משתנה, ולכן הפריסה של ה-API Proxy נכשלת

    <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

הודעת שגיאה

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

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

סיבה

אם למדיניות Extract Variables יש ביטוי <XPath> שבו הסוג <Variable> מוגדר כ-nodeset, אבל אי אפשר להמיר את הביטוי ל-nodeset, הפריסה של proxy ל-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 שזוהה בהודעת השגיאה (שלב 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> type הוא nodeset, זו הסיבה לשגיאה.

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

    <XPath>123</XPath>
    

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

רזולוציה

מוודאים שאפשר להמיר את הביטויים <XPath> שמשמשים במדיניות Extract Variables ל-nodeset אם הסוג <Variable> מוגדר כ-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>

InvalidPattern

הודעת שגיאה

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

אבחון

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

    Pattern {*} is invalid in ExtractVariables stepDefinition ExtractVariables-2.
    
  2. בקובץ ה-XML של מדיניות Extract Variables שנכשל, בודקים אם אחד מהרכיבים האלה מופיע וכולל רכיב <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

הודעת שגיאה

פריסת ה-proxy ל-API דרך ממשק המשתמש של Edge או דרך Edge Management API נכשלת עם הודעת השגיאה הבאה:

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

מידע נוסף על מרחבי שמות, XPath וקידומות זמין במאמר XML Namespaces and How They Affect XPath and XSLT (מרחבי שמות של 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 שזוהה בהודעת השגיאה (שלב 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> במדיניות Extract Variables (חילוץ משתנים). אם <XPath> הספציפי שצוין בהודעת השגיאה משתמש בתחילית או בערך שלא נכללים במרחבי השמות שהוגדרו במדיניות Extract Variables, זו הסיבה לשגיאה.

    שימו לב שהמשתנה הספציפי <XPath> משתמש בקידומת apigee בדוגמה למדיניות Extract Variables.

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

    עם זאת, הקידומת apigee לא מוגדרת באף אחד מרכיבי <Namespace>, ולכן הקומפילציה של <XPath> נכשלת ופריסת ה-VM נכשלת.

רזולוציה

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