Khắc phục sự cố lỗi thời gian chạy Trích xuất biến

Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến tài liệu về Apigee X.
thông tin

SourceMessageNotAvailable

Mã lỗi

steps.extractvariables.SourceMessageNotAvailable

Nội dung phản hồi lỗi

{
  "fault": {
      "faultstring": "[variable_name] message is not available for ExtractVariable: [policy_name]",
      "detail": {
          "errorcode": "steps.extractvariables.SourceMessageNotAvailable"
      }
  }
}

Nguyên nhân

Lỗi này xảy ra nếu biến thông báo được chỉ định trong phần tử <Source> của chính sách Trích xuất biến:

  • ngoài phạm vi (không có trong quy trình cụ thể đang thực thi chính sách) hoặc
  • không thể phân giải (không xác định)

Ví dụ: lỗi này xảy ra nếu chính sách Trích xuất biến thực thi trong luồng yêu cầu, nhưng phần tử <Source> được đặt thành biến response hoặc error, biến không tồn tại trong luồng yêu cầu.

Chẩn đoán

  1. Xác định chính sách Trích xuất biến xảy ra lỗi và tên của biến không có sẵn. Bạn có thể tìm thấy cả hai mục này trong phần tử faultstring của phản hồi lỗi. Ví dụ: trong chuỗi lỗi sau đây, tên chính sách là ExtractVariables-1 và biến là response:

    "faultstring": "response message is not available for ExtractVariable: ExtractVariables-1"

  2. Trong tệp XML của chính sách Trích xuất biến không thành công, hãy xác minh rằng tên của tập hợp biến trong phần tử khớp với tên biến đã xác định trong chuỗi lỗi (bước #1 ở trên). Ví dụ: chính sách Trích xuất các biến sau đây chỉ định một biến có tên là response trong phần tử, khớp với tên trong chuỗi lỗi:

    <ExtractVariables name="ExtractVariables-1">
        <Source>response</Source>
        <URIPath>
            <Pattern ignoreCase="true">/a/{pathSeg}</Pattern>
        </URIPath>
        <VariablePrefix>urirequest</VariablePrefix>
    </ExtractVariables>
    
  3. Xác định xem biến dùng trong phần tử <Source> có được định nghĩa và sử dụng trong quy trình thực thi chính sách Trích xuất biến hay không.

  4. Nếu biến đó là:

    • ngoài phạm vi (không có trong quy trình cụ thể đang thực thi chính sách) hoặc
    • không thể phân giải (không xác định)

    thì đó chính là nguyên nhân gây ra lỗi.

    Ví dụ: giả sử chính sách Trích xuất biến được hiển thị ở trên thực thi trong quy trình yêu cầu. Hãy nhớ rằng biến response được dùng trong phần tử <Source> của chính sách Trích xuất biến. Biến response chỉ có trong quy trình phản hồi.

    Vì biến response không tồn tại trong luồng yêu cầu, nên bạn sẽ nhận được mã lỗi: steps.extractvariables.SourceMessageNotAvailable.

Độ phân giải

Đảm bảo biến được đặt trong phần tử <Source> của chính sách Trích xuất biến không thành công đã được định nghĩa và tồn tại trong luồng thực thi chính sách.

Để sửa ví dụ về chính sách Trích xuất biến nêu trên, bạn có thể sửa đổi phần tử <Source> để sử dụng biến request vì biến này tồn tại trong quy trình yêu cầu:

<ExtractVariables name="ExtractVariables-1">
    <Source>request</Source>
    <URIPath>
        <Pattern ignoreCase="true">/a/{pathSeg}</Pattern>
    </URIPath>
    <VariablePrefix>urirequest</VariablePrefix>
</ExtractVariables>

SetVariableFailed

Mã lỗi

steps.extractvariables.SetVariableFailed

Nội dung phản hồi lỗi

{
    "fault": {
        "faultstring": "Failed to set variable [variable_name] value [variable_value] from ExtractVariables: [policy_name]",
        "detail": {
            "errorcode": "steps.extractvariables.SetVariableFailed"
        }
    }
}

Nguyên nhân

Lỗi này xảy ra nếu chính sách Trích xuất biến không thể đặt giá trị thành một biến. Thông thường, điều này xảy ra nếu bạn cố gắng chỉ định giá trị cho nhiều biến có tên bắt đầu bằng cùng các từ ở định dạng lồng nhau được phân tách bằng dấu chấm.

Ví dụ: giả sử bạn tạo/chỉ định một giá trị cho biến var.color. Trong trường hợp này, color được phân bổ dưới dạng một nút đối tượng. Sau đó, nếu bạn cố gắng chỉ định giá trị cho một biến var.color.next khác, thì việc này sẽ không thành công vì color đã được phân bổ và bạn không được phép phân bổ biến khác cho biến đó.

Chẩn đoán

  1. Xác định chính sách Trích xuất biến xảy ra lỗi và tên của biến không thể đặt giá trị. Bạn có thể tìm thấy cả hai mục này trong phần tử faultstring của phản hồi lỗi. Ví dụ: trong chuỗi lỗi sau đây, tên chính sách là ExtractColors và biến là var.color.next:

    "faultstring": "Failed to set variable var.color.next value red from ExtractVariables: ExtractColors"

  2. Trong XML của chính sách Trích xuất biến không thành công, hãy xác minh rằng tên của biến khớp với tên biến đã xác định trong chuỗi lỗi (bước #1 ở trên). Ví dụ: chính sách sau đây cố gắng gán một giá trị từ tham số truy vấn yêu cầu cho một biến có tên var.color.next (giá trị xuất hiện chuỗi lỗi):

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ExtractVariables name="ExtractColors">
        <DisplayName>ExtractColors</DisplayName>
        <Source>request</Source>
        <QueryParam name="color">
            <Pattern ignoreCase="true">{color}</Pattern>
        </QueryParam>
        <QueryParam name="nextcolor">
            <Pattern ignoreCase="true">{color.next}</Pattern>
        </QueryParam>
        <VariablePrefix>var</VariablePrefix>
    </ExtractVariables>
    
  3. Kiểm tra tất cả tên biến dùng trong chính sách Trích xuất biến không thành công. Nếu bạn đã chỉ định giá trị cho một biến khác có tên bắt đầu bằng tên biến được xác định trong chuỗi lỗi (bước #1 ở trên), thì đó chính là nguyên nhân gây ra lỗi.

    Trong ví dụ về chính sách Trích xuất biến nêu trên, bạn có thể lưu ý rằng:

    • Trước tiên, giá trị của tham số truy vấn có tên là color được gán cho một biến var.color (Lưu ý: var là tiền tố cho tất cả các biến được đặt trong phần tử <VariablePrefix>)
    • Trong bài tập tiếp theo, giá trị của tham số truy vấn nextcolor được gán cho một biến var.color.next khác.
    • var.color đã được phân bổ, nên chính sách Trích xuất biến không thể phân bổ một biến lồng nhau khác var.color.next. Vì vậy, bạn sẽ nhận được mã lỗi: steps.extractvariables.SetVariableFailed

Độ phân giải

  1. Đảm bảo rằng bạn không có nhiều tên biến có tên bắt đầu bằng cùng một từ được lồng ở định dạng được phân tách bằng dấu chấm.

    Để sửa chính sách Trích xuất biến nêu trên, bạn có thể sửa đổi tên biến var.color.next để sử dụng tên biến var.nextcolor.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ExtractVariables name="ExtractColors">
        <DisplayName>ExtractColors</DisplayName>
        <Source>request</Source>
        <QueryParam name="color">
            <Pattern ignoreCase="true">{color}</Pattern>
        </QueryParam>
        <QueryParam name="nextcolor">
            <Pattern ignoreCase="true">{nextcolor}</Pattern>
        </QueryParam>
        <VariablePrefix>var</VariablePrefix>
    </ExtractVariables>
    
    

Thông tin khác

Để biết thêm thông tin, hãy tham khảo bài đăng này trên thẻ Cộng đồng.

InvalidJSONPath

Mã lỗi

steps.extractvariables.InvalidJSONPath

Nội dung phản hồi lỗi

{
    "fault": {
        "faultstring": "Invalid JSON path [path_name] in policy [policy_name].",
        "detail": {
            "errorcode": "steps.extractvariables.InvalidJSONPath"
        }
    }
}

Nguyên nhân

Lỗi này xảy ra nếu bạn sử dụng một đường dẫn JSON không hợp lệ trong phần tử <JSONPath> của chính sách Trích xuất biến. Ví dụ: nếu một tải trọng JSON không có đối tượng Name, nhưng bạn chỉ định Name làm đường dẫn trong chính sách Extract Variables (Trích xuất biến), thì lỗi này sẽ xảy ra.

Chẩn đoán

  1. Xác định chính sách Trích xuất biến xảy ra lỗi và đường dẫn JSON không hợp lệ. Bạn có thể tìm thấy cả hai mục này trong phần tử faultstring của phản hồi lỗi. Ví dụ: trong chuỗi lỗi sau đây, tên chính sách là ExtractJSONVariables và đường dẫn JSON không hợp lệ là $.Name:

    "faultstring": "Invalid JSON path $.Name in policy ExtractJSONVariables."

  2. Trong XML của chính sách Trích xuất biến không thành công, hãy xác minh rằng đường dẫn JSON được đặt trong phần tử <JSONPath> khớp với đường dẫn đã xác định trong chuỗi lỗi (bước #1 ở trên). Ví dụ: chính sách Trích xuất các biến sau đây chỉ định đường dẫn JSON $.Name, khớp với nội dung trong chuỗi lỗi:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ExtractVariables name="ExtractJSONVariables">
        <Source>response</Source>
        <JSONPayload>
            <Variable name="name" type="string">
                <JSONPath>$.Name</JSONPath>
            </Variable>
        </JSONPayload>
       <VariablePrefix>employee</VariablePrefix>
    </ExtractVariables>
    
  3. Kiểm tra phần tử <Source> và xác định xem bạn đang muốn trích xuất biến từ Tải trọng JSON nào. Ví dụ: nếu bạn đặt phần tử <Source> thành request, thì chính sách sẽ trích xuất tải trọng JSON từ đối tượng yêu cầu. Nếu bạn đặt thuộc tính này thành response, thì đó sẽ là đối tượng phản hồi.

    Trong ví dụ về chính sách Trích xuất biến ở trên, phần tử <Source> được đặt thành response, vì vậy, các biến này đang được trích xuất từ tải trọng JSON của phản hồi.

    <Source>response</Source>

  4. Kiểm tra tải trọng JSON phù hợp (xác định ở bước 3) và xác thực xem tải trọng đó có đối tượng được chỉ định trong phần tử <JSONPath> hay không. Nếu tải trọng JSON không có đối tượng đó, thì đó là nguyên nhân gây ra lỗi.

    Ví dụ: hãy xem xét việc bạn đang cố gắng trích xuất các biến từ tải trọng phản hồi JSON sau đây:

    {
      "firstName":"John",
      "lastName":"Doe",
      "city":"San Jose",
      "state":"CA"
    }
    

    Vì tải trọng phản hồi JSON không có đối tượng Name, nên chính sách Trích xuất biến sẽ gặp lỗi mà bạn nhận được mã lỗi: steps.extractvariables.InvalidJSONPath.

Độ phân giải

  1. Đảm bảo rằng chỉ các đối tượng thuộc Tải trọng JSON chứa các biến đang được trích xuất mới được chỉ định trong phần tử <JSONPath> của chính sách Trích xuất biến.

    Để sửa ví dụ về chính sách Trích xuất biến ở trên, bạn có thể sửa đổi phần tử <JSONPath> để chỉ định một trong các đối tượng có trong phần tải dữ liệu phản hồi JSON mẫu (ví dụ: các đối tượng firstNamelastName là hợp lệ):

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ExtractVariables name="ExtractJSONVariables">
        <Source>response</Source>
        <JSONPayload>
            <Variable name="name" type="string">
                <JSONPath>$.firstName</JSONPath>
            </Variable>
        </JSONPayload>
       <VariablePrefix>employee</VariablePrefix>
    </ExtractVariables>
    
    

ExecutionFailed

Mã lỗi

steps.extractvariables.ExecutionFailed

Nội dung phản hồi lỗi

{
    "fault": {
        "faultstring": "Failed to execute the ExtractVariables: [policy_name]",
        "detail": {
            "errorcode": "steps.extractvariables.ExecutionFailed"
        }
    }
}

Các nguyên nhân có thể

Nguyên nhân có thể dẫn đến lỗi này là:

Nguyên nhân Mô tả
Thiếu tải trọng đầu vào Tải trọng đầu vào (JSON, XML) trống.
Thông tin đầu vào không hợp lệ hoặc không đúng định dạng Dữ liệu đầu vào (JSON, XML, v.v.) được chuyển đến chính sách không hợp lệ hoặc không đúng định dạng.

Nguyên nhân: Thiếu tải trọng đầu vào

Nếu chính sách Trích xuất biến được định trích xuất các biến từ tải trọng JSON hoặc XML, nhưng nội dung (tải trọng) của biến được chỉ định trong phần tử <Source> bị trống, thì lỗi này sẽ xảy ra.

Ví dụ: Nếu phần tử <Source> trong chính sách Trích xuất biến được đặt là request hoặc response và những phần tử này phải chứa hoặc tải trọng JSON hoặc XML, nhưng tải trọng đang trống, thì lỗi sẽ xảy ra.

Chẩn đoán

  1. Xác định chính sách Trích xuất biến xảy ra lỗi. Bạn có thể tìm thấy thông tin này trong phần tử chuỗi lỗi của phản hồi lỗi. Ví dụ: trong chuỗi lỗi sau đây, tên chính sách là ExtractJSONVariables:

    "faultstring": "Failed to execute the ExtractVariables: ExtractXMLVariables"

  2. Kiểm tra phần tử <Source> trong XML Trích xuất biến không thành công và xác định loại dữ liệu đầu vào mà biến đang được trích xuất. Ví dụ: chính sách Trích xuất biến sau đây có phần tử <Source> được đặt thành response và đang trích xuất các biến từ tải trọng XML:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <ExtractVariables name="ExtractXMLVariables" async="false" continueOnError="false" enabled="true">
        <XMLPayload>
            <Namespaces/>
            <Variable name="City" type="string">
                <XPath>/city</XPath>
            </Variable>
        </XMLPayload>
        <Source clearPayload="false">response</Source>
    </ExtractVariables>
    
    
  3. Kiểm tra xem dữ liệu đầu vào được phân tích cú pháp bằng chính sách Trích xuất biến có trống hay không. Nếu dữ liệu đầu vào trống, thì đó là nguyên nhân gây ra lỗi.

    Trong ví dụ về chính sách Trích xuất biến ở trên, tải trọng phản hồi (tức là nội dung phản hồi) do máy chủ phụ trợ gửi đang trống.

    Vì tải trọng phản hồi XML đang trống, nên bạn sẽ nhận được mã lỗi:

    steps.extractvariables.ExecutionFailed

    Lỗi này cũng có thể xảy ra nếu phần tử <Source> được đặt thành request, nhưng không có tải trọng nào được truyền trong yêu cầu proxy API. Ví dụ:

    curl -v "http://<org>-<env>.apigee.net/v1/testevexecutionfailed" -H "Content-Type: application/xml"
    

    Chính sách Extract Variables chỉ thực hiện việc trích xuất XML khi tiêu đề Content-Type của thông báo là application/xml, text/xml hoặc application/*+xml. Bạn phải chuyển tiêu đề Loại-Nội dung dưới dạng application/xml, text/xml hoặc application/*+xml nếu muốn chính sách Trích xuất biến phân tích cú pháp một tải trọng yêu cầu XML.

Độ phân giải

Đảm bảo rằng dữ liệu đầu vào được chuyển đến chính sách Trích xuất biến là hợp lệ và không trống.

Để khắc phục vấn đề trong ví dụ về chính sách Trích xuất biến nêu trên, hãy truyền một tải trọng XML hợp lệ. Ví dụ:

  1. Tạo một tệp có tên city.xml với nội dung sau:

    <city>Bengaluru</city>
    <area>Sanjaynagar</area>
    
  2. Thực hiện lệnh gọi API bằng lệnh cURL như sau:

    curl -v "http://<org>-<env>.apigee.net/v1/testevexecutionfailed" -H "Content-Type: application/xml" -X POST -d @city.xml
    
    

Nguyên nhân: Thông tin đầu vào không hợp lệ hoặc không đúng định dạng

Nếu chính sách Trích xuất biến phân tích cú pháp dữ liệu đầu vào không hợp lệ hoặc sai định dạng, thì bạn sẽ gặp lỗi này.

Ví dụ: nếu JSON không hợp lệ sau đây được cung cấp làm dữ liệu đầu vào cho chính sách Trích xuất biến, bạn sẽ gặp lỗi này.

[
    "args": ["name" : "amar" ]
]

Chẩn đoán

  1. Xác định chính sách Trích xuất biến xảy ra lỗi. Bạn có thể tìm thấy thông tin này trong phần tử faultstring của phản hồi lỗi. Ví dụ: trong faultstring sau đây, tên chính sách là ExtractJSONVariables:

    "faultstring": "Failed to execute the ExtractVariables: ExtractJSONVariables"

  2. Kiểm tra phần tử <Source> trong XML Trích xuất biến không thành công và xác định loại dữ liệu đầu vào mà biến đang được trích xuất. Ví dụ: chính sách Trích xuất biến sau đây có phần tử <Source> được đặt thành request và đang trích xuất các biến từ tải trọng JSON:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <ExtractVariables name="ExtractJSONVariables" async="false" continueOnError="false" enabled="true">
        <JSONPayload>
            <Variable name="Name" type="string">
                <JSONPath>$.args.name</JSONPath>
            </Variable>
        </JSONPayload>
        <Source clearPayload="false">request</Source>
    </ExtractVariables>
    
    
  3. Kiểm tra xem dữ liệu đầu vào được phân tích cú pháp bằng chính sách Trích xuất biến có hợp lệ hay không. Nếu dữ liệu nhập không hợp lệ hoặc sai định dạng thì đó chính là nguyên nhân gây ra lỗi.

    Trong ví dụ về chính sách Trích xuất biến ở trên, tệp JSON không hợp lệ sau đây đã được chuyển đến chính sách Trích xuất biến

    [
        "args": ["name" : "amar" ]
    ]
    

    Dưới đây là lệnh gọi API mẫu cho thấy cách chuyển yêu cầu:

    curl -v "http://<org>-<env>.apigee.net/v1/testevexecutionfailed" -H "Content-Type: application/json" -X POST -d '[ "args" : ["name" : "amar" ]]'
    

    Tải trọng JSON được truyền đến API không hợp lệ vì chứa một mảng có dấu ngoặc vuông ([ ]) , nên bạn sẽ nhận được mã lỗi:

    steps.extractvariables.ExecutionFailed
    

    Lỗi này cũng có thể xảy ra nếu phần tử <Source> được đặt thành response nhưng tải trọng phản hồi JSON không hợp lệ hoặc không đúng định dạng.

Độ phân giải

Đảm bảo rằng dữ liệu đầu vào được chuyển đến chính sách Trích xuất biến là hợp lệ và không sai định dạng.

Để khắc phục vấn đề về chính sách Trích xuất biến được thảo luận ở trên, hãy chuyển yêu cầu tải trọng JSON hợp lệ như sau:

{
   "args":{
      "name":"amar"
   }
}

UnableToCast

Mã lỗi

steps.extractvariables.UnableToCast

Nội dung phản hồi lỗi

{
    "fault": {
        "faultstring": "Unable to cast value [value] as [type].",
        "detail": {
            "errorcode": "steps.extractvariables.UnableToCast"
        }
    }
}

Nguyên nhân

Lỗi này xảy ra nếu chính sách Trích xuất biến không thể truyền giá trị đã trích xuất thành một biến. Thông thường, điều này xảy ra nếu bạn cố gắng đặt giá trị của một loại dữ liệu thành một biến của một loại dữ liệu khác.

Ví dụ: nếu chính sách Trích xuất biến cố gắng đặt một giá trị đã được trích xuất từ biến Chuỗi thành biến Số nguyên, thì bạn sẽ thấy lỗi này.

Chẩn đoán

  1. Xác định loại dữ liệu của biến mà chính sách Trích xuất biến đang cố gắng truyền và không thành công. Bạn có thể tìm thấy thông tin này trong phần tử faultstring của phản hồi lỗi. Ví dụ: trong faultstring sau đây, loại đối tượng là BOOLEAN:

    "faultstring":"Unable to cast value 36.231 as BOOLEAN."

  2. Xác định chính sách Trích xuất biến mà bạn đang cố gắng đặt giá trị thành một biến thuộc loại đã xác định ở bước #1.

    Ví dụ: chính sách Extract Variables sau đây sẽ trích xuất giá trị từ JSONPath $.latitude sang biến thuộc loại boolean, khớp với giá trị trong chuỗi lỗi:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <ExtractVariables name="EV-XML-Name" async="false" continueOnError="false" enabled="true">
        <JSONPayload>
          <Variable name="latitude" type="boolean">
              <JSONPath>$.latitude</JSONPath>
          </Variable>
        </JSONPayload>
        <Source clearPayload="false">response</Source>
    </ExtractVariables>
    
    
  3. Kiểm tra loại dữ liệu của giá trị đang được trích xuất. Dữ liệu có thể ở dạng tiêu đề, đường dẫn URI, tải trọng JSON/XML, tham số biểu mẫu và tham số truy vấn.

  4. Xác minh xem kiểu dữ liệu được xác định ở bước 3 và kiểu dữ liệu của biến cho dữ liệu nào đang được chỉ định (được xác định ở bước 2) có giống nhau hay không.

  5. Nếu loại dữ liệu của biến nguồn và biến đích không giống nhau, thì đó là nguyên nhân gây ra lỗi.

    Trong ví dụ về chính sách Trích xuất biến ở trên, hãy xem xét tải trọng yêu cầu JSON như sau:

    {
     "latitude":36.2312
    }
    

    Loại dữ liệu của giá trị được trích xuất từ <JSONPath>, ‘$.latitude’, là một Số nguyên được gán cho một biến boolean của loại dữ liệu.

    Vì loại dữ liệu của giá trị được trích xuất và loại dữ liệu của biến mà giá trị đang được chỉ định không giống nhau, nên bạn sẽ nhận được mã lỗi: steps.extractvariables.UnableToCast.

Độ phân giải

Đảm bảo rằng kiểu dữ liệu của giá trị được trích xuất và biến mà nội dung đang được chỉ định có cùng kiểu.

Để sửa ví dụ về chính sách Trích xuất biến, bạn phải sửa đổi loại biến thành Số nguyên:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables name="EV-XML-Name" async="false" continueOnError="false" enabled="true">
    <JSONPayload>
        <Variable name="latitude" type="integer">
            <JSONPath>$.latitude</JSONPath>
        </Variable>
    </JSONPayload>
    <Source clearPayload="false">response</Source>
</ExtractVariables>

JsonPathParsingFailure

Mã lỗi

steps.extractvariables.JsonPathParsingFailure

Nội dung phản hồi lỗi

{
    "fault": {
        "faultstring": "ExtractVariables [policy_name]: Json path parsing failed for flow variables [variable_name]",
        "detail": {
            "errorcode": "steps.extractvariables.JsonPathParsingFailure"
        }
    }
}

Nguyên nhân

Lỗi này xảy ra khi chính sách Trích xuất biến không thể phân tích cú pháp đường dẫn JSON và trích xuất dữ liệu từ biến luồng được chỉ định trong phần tử <Source>. Thông thường, điều này xảy ra nếu biến luồng được chỉ định trong phần tử <Source> không tồn tại trong luồng hiện tại.

Ví dụ: lỗi này xảy ra nếu chính sách Trích xuất biến thực thi trong luồng phản hồi và dự kiến sẽ phân tích cú pháp đường dẫn JSON, nhưng phần tử <Source> sẽ chỉ định biến luồng request.content, biến này không tồn tại trong luồng phản hồi.

Chẩn đoán

  1. Xác định chính sách Trích xuất biến xảy ra lỗi và tên của biến luồng không thể trích xuất dữ liệu. Bạn có thể tìm thấy cả hai mục này trong phần tử chuỗi lỗi của phản hồi lỗi. Ví dụ: trong chuỗi lỗi sau đây, tên chính sách là ExtractVariables-1 và biến là request.content:

    "faultstring": "ExtractVariables ExtractJSONVariabes: Json path parsing failed for flow variables request.content"

  2. Trong tệp XML của chính sách Trích xuất biến không thành công, hãy xác minh rằng tên của biến được đặt trong phần tử <Source> khớp với tên biến đã xác định trong chuỗi lỗi (bước #1 ở trên). Ví dụ: chính sách Trích xuất các biến sau đây chỉ định một biến có tên là request.content, khớp với nội dung trong chuỗi lỗi:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <ExtractVariables name="ExtractJSONVariables" async="false" continueOnError="false" enabled="true">
        <JSONPayload>
            <Variable name="Name" type="string">
                <JSONPath>$.args.name</JSONPath>
            </Variable>
        </JSONPayload>
        <Source clearPayload="false">request.content</Source>
    </ExtractVariables>
    
    
  3. Xác thực xem biến luồng dùng trong phần tử <Source> đã được xác định và có trong luồng mà chính sách Trích xuất biến đang thực thi hay chưa.

  4. Nếu biến đó là:

    • ngoài phạm vi (không có trong quy trình cụ thể đang thực thi chính sách) hoặc
    • không thể phân giải (không xác định)

    thì đó chính là nguyên nhân gây ra lỗi.

    Ví dụ: giả sử chính sách ExtractVariables trình bày ở trên được thực thi trong luồng phản hồi. Hãy nhớ rằng biến luồng request.content được dùng trong phần tử <Source> của chính sách Trích xuất biến. Biến luồng request.content chỉ có trong luồng yêu cầu.

    Vì biến response không tồn tại trong luồng yêu cầu, nên bạn sẽ nhận được mã lỗi: steps.extractvariables.JsonPathParsingFailure.

Độ phân giải

Đảm bảo rằng biến luồng dùng trong phần tử <Source> của chính sách Trích xuất biến có sẵn trong luồng mà chính sách Trích xuất biến thực thi.

Chẳng hạn, giả sử một biến có tên response.content tồn tại trong luồng phản hồi và trên thực tế lại chứa JSON mà bạn muốn trích xuất. Để sửa chính sách Trích xuất biến nêu trên, bạn có thể sửa đổi phần tử <Source> như sau:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables name="ExtractJSONVariables" async="false" continueOnError="false" enabled="true">
    <JSONPayload>
        <Variable name="Name" type="string">
            <JSONPath>$.args.name</JSONPath>
        </Variable>
    </JSONPayload>
    <Source clearPayload="false">response.content</Source>
</ExtractVariables>