Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến
Tài liệu về Apigee X. thông tin
Nội dung
Chính sách ExtractVariables trích xuất nội dung từ một yêu cầu hoặc phản hồi và đặt giá trị của một biến cho nội dung đó. Bạn có thể trích xuất bất kỳ phần nào của thư, bao gồm tiêu đề, đường dẫn URI, tải trọng JSON/XML, biểu mẫu tham số và tham số truy vấn. Chính sách này hoạt động bằng cách áp dụng một mẫu văn bản cho thông báo và sau khi tìm thấy kết quả trùng khớp, hãy đặt biến với nội dung thông báo được chỉ định.
Mặc dù bạn thường sử dụng chính sách này để trích xuất thông tin từ thư yêu cầu hoặc thư phản hồi, bạn cũng có thể sử dụng nó để trích xuất thông tin từ các nguồn khác, bao gồm các thực thể được tạo bởi Chính sách AccessEntity, Đối tượng XML hoặc đối tượng JSON.
Sau khi trích xuất nội dung thông báo được chỉ định, bạn có thể tham chiếu biến trong chính sách của Google như một phần của việc xử lý yêu cầu và phản hồi.
Video
Hãy xem các video sau để tìm hiểu thêm về chính sách ExtractVariables.
Video | Mô tả |
---|---|
Trích xuất biến từ tải trọng XML | Trích xuất các biến từ tải trọng XML bằng chính sách Trích xuất biến. |
Trích xuất biến từ tải trọng JSON | Trích xuất các biến từ tải trọng JSON bằng chính sách Trích xuất biến. |
Trích xuất biến từ các tham số | Trích xuất biến từ các tham số, chẳng hạn như tham số truy vấn, tiêu đề, biểu mẫu hoặc URI. |
Trích xuất biến qua các thông số nhiều giá trị | Trích xuất biến từ các tham số nhiều giá trị. |
Trích xuất biến từ tham số truy vấn (Classic Edge) | Trích xuất các biến từ một tham số truy vấn bằng giao diện người dùng Classic Edge. |
Trích xuất biến từ tải trọng XML hoặc JSON (Classic Edge) | Trích xuất các biến từ tải trọng XML hoặc JSON bằng giao diện người dùng Classic Edge. |
Mẫu
Các mã mẫu về chính sách này minh hoạ cách trích xuất biến từ các loại sau cấu phần phần mềm:
GitHub
Các đường liên kết này trỏ đến các mẫu proxy API đang hoạt động mà bạn có thể triển khai và chạy trên Edge. Chúng sử dụng ExtractVariables và có trong kho lưu trữ mẫu api-platform-samples của Apigee trên GitHub. README giải thích cách sử dụng ExtractVariables trong từng trường hợp cũng như cách triển khai và chạy từng mẫu.
- Giải nén và chỉ định biến mẫu (trích xuất dữ liệu từ thông báo JSON và XML)
- Quyền truy cập mẫu thực thể
- Phân trang và lưu mẫu vào bộ nhớ đệm
- Định tuyến lại mẫu URL mục tiêu
- Mẫu kết hợp của thành phần chính sách
URI
<ExtractVariables name="ExtractVariables-1"> <DisplayName>Extract a portion of the url path</DisplayName> <Source>request</Source> <URIPath> <Pattern ignoreCase="true">/accounts/{id}</Pattern> </URIPath> <VariablePrefix>urirequest</VariablePrefix> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> </ExtractVariables>
Hãy xem xét mã chính sách mẫu ở trên. Phần tử <URIPath>
cho biết
Chính sách ExtractVariables để trích xuất thông tin từ đường dẫn URI. Chiến lược phát hành đĩa đơn
Phần tử <Pattern>
chỉ định mẫu để áp dụng cho đường dẫn URI. Chiến lược phát hành đĩa đơn
mẫu được coi là một mẫu đơn giản, với dấu ngoặc nhọn biểu thị các phần khác nhau
của đường dẫn URI.
Tên của biến cần đặt được xác định bởi giá trị được chỉ định trong
Phần tử <VariablePrefix>
, cũng như giá trị nằm trong dấu ngoặc nhọn {}
trong phần tử <Pattern>
. Hai giá trị được kết hợp bằng một dấu chấm xen kẽ,
chẳng hạn như dẫn đến tên biến là urirequest.id
. Nếu không có
Phần tử <VariablePrefix>
, thì tên biến chỉ là giá trị
trong dấu ngoặc nhọn.
Hãy xem xét mã chính sách mẫu ở trên hoạt động với yêu cầu đến sau đây:
GET http://org1-test.apigee.net/svc1/accounts/12797282
Giả sử đường dẫn cơ sở cho Proxy API là /svc1
. Khi Apigee Edge áp dụng
Mã chính sách ExtractVariables ở trên cho yêu cầu đến này, nó sẽ đặt biến
urirequest.id
thành 12797282
. Sau khi Apigee Edge thực thi chính sách,
các chính sách hoặc mã tiếp theo trong quy trình xử lý có thể tham chiếu đến biến có tên
urirequest.id
để nhận giá trị chuỗi 12797282
.
Ví dụ: chính sách AttributionMessage sau đây nhúng giá trị của biến đó vào tải trọng của thông báo yêu cầu mới:
<AssignMessage async="false" continueOnError="false" enabled="true" name="AssignPayload"> <DisplayName>AssignPayload</DisplayName> <Set> <Payload contentType="text/xml"> <IdExtractedFromURI>{urirequest.id}</IdExtractedFromURI> </Payload> </Set> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="true" transport="http" type="request">newRequest</AssignTo> </AssignMessage>
Tham số truy vấn
<ExtractVariables name="ExtractVariables-2"> <DisplayName>Extract a value from a query parameter</DisplayName> <Source>request</Source> <QueryParam name="code"> <Pattern ignoreCase="true">DBN{dbncode}</Pattern> </QueryParam> <VariablePrefix>queryinfo</VariablePrefix> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> </ExtractVariables>
Hãy xem xét mã chính sách mẫu ở trên hoạt động với yêu cầu đến sau đây:
GET http://org1-test.apigee.net/accounts/12797282?code=DBN88271
Khi Apigee Edge áp dụng mã chính sách ExtractVariables nêu trên cho yêu cầu đến này,
nó sẽ đặt biến queryinfo.dbncode
thành 88271
. Sau Apigee Edge
thực thi chính sách, các chính sách hoặc mã tiếp theo trong quy trình xử lý có thể tham chiếu đến
biến có tên queryinfo.dbncode
để lấy giá trị chuỗi 88271
.
Bây giờ, bạn có thể truy cập vào biến queryinfo.dbncode
trong proxy.
Ví dụ: chính sách FindMessage sau đây sẽ sao chép nội dung đó vào tải trọng của yêu cầu:
<AssignMessage async="false" continueOnError="false" enabled="true" name="GetURIPath"> <DisplayName>GetQP</DisplayName> <Set> <Payload contentType="text/xml"> <ExtractQP>{queryinfo.dbncode}</ExtractQP> </Payload> </Set> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Nhiều tham số
<ExtractVariables name="ExtractVariables-2"> <DisplayName>Extract a value from a query parameter</DisplayName> <Source>request</Source> <QueryParam name="w"> <Pattern ignoreCase="true">{firstWeather}</Pattern> </QueryParam> <QueryParam name="w.2"> <Pattern ignoreCase="true">{secondWeather}</Pattern> </QueryParam> <VariablePrefix>queryinfo</VariablePrefix> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> </ExtractVariables>
Giả sử thiết kế API của bạn cho phép bạn chỉ định nhiều tham số truy vấn có cùng . Bạn có thể sử dụng chính sách này để trích xuất giá trị của nhiều phiên bản truy vấn tham số "w". Để tham chiếu các tham số truy vấn này trong chính sách ExtractVariables, bạn sử dụng chỉ mục, trong đó trường hợp đầu tiên của tham số truy vấn không có chỉ mục, trường hợp thứ hai là tại chỉ mục 2, chỉ số thứ ba ở chỉ mục 3, v.v.
Hãy xem xét mã chính sách mẫu ở trên hoạt động với yêu cầu đến sau đây:
GET http://org1-test.apigee.net/weather?w=Boston&w=Chicago
Khi Apigee Edge áp dụng mã chính sách ExtractVariables nêu trên cho yêu cầu đến này,
phương thức này sẽ đặt biến queryinfo.firstWeather
thành Boston
và
biến queryInfo.secondWeather
thành Chicago
.
Giờ đây, bạn có thể truy cập vào biến queryinfo.firstWeather
và
queryinfo.secondWeather bằng
proxy của bạn. Ví dụ: chính sách AttributionMessage sau đây sẽ sao chép nội dung đó vào tải trọng của
yêu cầu:
<AssignMessage async="false" continueOnError="false" enabled="true" name="GetURIPath"> <DisplayName>GetQP</DisplayName> <Set> <Payload contentType="text/xml"> <ExtractQP1>{queryinfo.firstWeather}</ExtractQP1> <ExtractQP2>{queryinfo.secondWeather}</ExtractQP2> </Payload> </Set> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Tiêu đề
<ExtractVariables name='ExtractVariable-OauthToken'> <Source>request</Source> <Header name="Authorization"> <Pattern ignoreCase="false">Bearer {oauthtoken}</Pattern> </Header> <VariablePrefix>clientrequest</VariablePrefix> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> </ExtractVariables>
Giả sử rằng API của bạn sử dụng mã thông báo truy cập OAuth phiên bản 2.0. Hãy xem xét mã chính sách mẫu ở trên
làm việc với yêu cầu mang mã thông báo OAuth v2.0 bao gồm tiêu đề như sau:
Authorization: Bearer TU08xptfFfeM7aS0xHqlxTgEAdAM.
Là nhà thiết kế API, giả sử bạn muốn sử dụng giá trị mã thông báo (chứ không phải toàn bộ tiêu đề) làm khoá trong tra cứu bộ nhớ đệm. Bạn có thể sử dụng mã chính sách ExtractVariables ở trên để trích xuất mã thông báo.
Khi Apigee Edge áp dụng mã chính sách ExtractVariables ở trên cho tiêu đề này, thì
đặt biến clientrequest.oauthtoken
thành
TU08xptfFfeM7aS0xHqlxTgEAdAM
Giờ đây, bạn có thể truy cập vào biến clientrequest.oauthtoken
trong
proxy. Ví dụ: chính sách AttributionMessage sau đây sẽ sao chép nội dung đó vào tải trọng của
yêu cầu:
<AssignMessage async="false" continueOnError="false" enabled="true" name="GetURIPath"> <DisplayName>GetHeader</DisplayName> <Set> <Payload contentType="text/xml"> <ExtractHeader>{clientrequest.oauthtoken}</ExtractHeader> </Payload> </Set> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
JSON
<ExtractVariables name="ExtractVariables-3"> <Source>response</Source> <JSONPayload> <Variable name="latitude" type="float"> <JSONPath>$.results[0].geometry.location.lat</JSONPath> </Variable> <Variable name="longitude" type="float"> <JSONPath>$.results[0].geometry.location.lng</JSONPath> </Variable> </JSONPayload> <VariablePrefix>geocoderesponse</VariablePrefix> </ExtractVariables>
<JSONPayload>
$
Hãy xem xét tải trọng phản hồi JSON sau đây:
{ "results": [{ "geometry": { "location": { "lat": 37.42291810, "lng": -122.08542120 }, "location_type": "ROOFTOP", "viewport": { "northeast": { "lat": 37.42426708029149, "lng": -122.0840722197085 }, "southwest": { "lat": 37.42156911970850, "lng": -122.0867701802915 } } } }] }
Khi Apigee Edge áp dụng mã chính sách ExtractVariables nêu trên cho thông báo JSON này,
đặt hai biến: geocoderesponse.latitude
và
geocoderesponse.longitude
Cả hai biến đều sử dụng cùng một tiền tố biến của
geocoderesponse
. Hậu tố cho các biến này được chỉ định rõ ràng bởi
Thuộc tính name
của phần tử <Variable>
.
Biến geocoderesponse.latitude
nhận được giá trị
37.42291810
Biến geocoderesponse.longitude
nhận được giá trị
-122.08542120
Giờ đây, bạn có thể truy cập vào biến geocoderesponse.latitude
trong
proxy. Ví dụ: chính sách Chỉ định sau đây sẽ sao chép nội dung này vào một tiêu đề có tên là "vĩ độ"
trong câu trả lời:
<AssignMessage async="false" continueOnError="false" enabled="true" name="GetURIPath"> <DisplayName>GetJSONVar</DisplayName> <Add> <Headers> <Header name="latitude">{geocoderesponse.latitude}</Header> </Headers> </Add> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="response"/> </AssignMessage>
XML
<ExtractVariables name="ExtractVariables-4"> <Source>response</Source> <XMLPayload> <Namespaces> <Namespace prefix="dir">urn:43BFF88D-D204-4427-B6BA-140AF393142F</Namespace> </Namespaces> <Variable name="travelmode" type="string"> <XPath>/dir:Directions/dir:route/dir:leg/dir:step/@mode</XPath> </Variable> <Variable name="duration" type="string"> <XPath>/dir:Directions/dir:route/dir:leg/dir:step/dir:duration/dir:value</XPath> </Variable> <Variable name="timeunit" type="string"> <XPath>/dir:Directions/dir:route/dir:leg/dir:step/dir:duration/dir:text</XPath> </Variable> </XMLPayload> <VariablePrefix>directionsresponse</VariablePrefix> </ExtractVariables>
<XMLPayload>
Hãy xem xét tải trọng phản hồi XML sau đây:
<Directions xmlns="urn:43BFF88D-D204-4427-B6BA-140AF393142F"> <status>OK</status> <route> <summary>I-40 W</summary> <leg> <step mode="DRIVING"> <start_location> <lat>41.8507300</lat> <lng>-87.6512600</lng> </start_location> <end_location> <lat>41.8525800</lat> <lng>-87.6514100</lng> </end_location> <duration> <value>19</value> <text>minutes</text> </duration> </step> </leg> </route> </Directions>
Khi Apigee Edge áp dụng mã chính sách ExtractVariables nêu trên cho thông báo XML này,
thiết lập 3 biến: directionsresponse.travelmode,
directionsresponse.duration
và directionsresponse.timeunit
. Tất cả
biến sử dụng cùng tiền tố biến directionsresponse
. Hậu tố cho
các biến này được chỉ định rõ ràng bởi phần tử <Variable>
Thuộc tính name
.
Biến directionsresponse.travelmode
nhận được giá trị
DRIVING
Biến directionsresponse.duration
nhận được giá trị
19
Biến directionsresponse.timeunit
nhận được giá trị
minutes
Giờ đây, bạn có thể truy cập vào biến directionresponse.travelmode
trong
proxy của bạn. Ví dụ: chính sách PagingMessage sau sẽ sao chép nội dung đó vào một tiêu đề có tên
"tmode" trong câu trả lời:
<AssignMessage async="false" continueOnError="false" enabled="true" name="GetURIPath"> <DisplayName>GetXMLVar</DisplayName> <Add> <Headers> <Header name="tmode">{directionsresponse.travelmode}</Header> </Headers> </Add> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Giới thiệu về chính sách ExtractVariables
Nhà phát triển API xây dựng các proxy API hoạt động khác nhau dựa trên nội dung của thông báo, bao gồm tiêu đề, đường dẫn URI, tải trọng và tham số truy vấn. Thông thường, proxy trích xuất một số của nội dung này để sử dụng trong câu lệnh điều kiện. Sử dụng chính sách ExtractVariables (Trích xuất) để thực hiện này.
Khi xác định chính sách ExtractVariables, bạn có thể chọn:
- Tên của các biến cần đặt
- Nguồn của biến
- Số lượng biến cần trích xuất và đặt
Khi được thực thi, chính sách này sẽ áp dụng một mẫu văn bản cho nội dung và sau khi tìm thấy kết quả trùng khớp, chính sách sẽ đặt giá trị của biến được chỉ định với nội dung. Sau đó, các chính sách và mã khác có thể sử dụng các biến đó để cho phép hành vi động hoặc gửi dữ liệu doanh nghiệp đến Analytics API Edge.
Để xem cách sử dụng ExtractVariables để tạo báo cáo Analytics theo nội dung, hãy xem Phân tích Nội dung thông báo API sử dụng số liệu phân tích tuỳ chỉnh.
Phạm vi
Các biến được đặt bằng chính sách ExtractVariables có phạm vi toàn cục. Tức là, sau khi Chính sách ExtractVariables xác định một biến mới, bạn có thể truy cập biến đó từ bất kỳ chính sách nào hoặc mã trong bất kỳ giai đoạn nào của quy trình (thực thi sau chính sách ExtractVariables). Chiến dịch này bao gồm:
- PreFlow: ProxyEndpoint và TargetEndpoint (Yêu cầu và Phản hồi)
- PostFlow: ProxyEndpoint và TargetEndpoint (Yêu cầu và Phản hồi)
- PostClientFlow: ProxyEndpoint (Chỉ phản hồi, sử dụng Chính sách ghi nhật ký tin nhắn)
- Luồng lỗi
Giới thiệu về tính năng so khớp và tạo biến
Chính sách ExtractVariables trích xuất thông tin từ một yêu cầu hoặc phản hồi và ghi cho một biến. Đối với mỗi loại thông tin mà bạn có thể trích xuất, chẳng hạn như đường dẫn URI hoặc Với dữ liệu XML, bạn chỉ định mẫu để khớp và tên của biến được dùng để chứa thông tin được trích xuất.
Tuy nhiên, cách hoạt động của tính năng so khớp mẫu phụ thuộc vào nguồn trích xuất. Nội dung sau đây mô tả hai loại thông tin cơ bản mà bạn có thể trích xuất.
Đường dẫn URI trùng khớp, tham số truy vấn, tiêu đề, tham số biểu mẫu và biến
Khi trích xuất thông tin từ đường dẫn URI, tham số truy vấn, tiêu đề, tham số biểu mẫu và các biến mà bạn sử dụng thẻ <Pattern> để chỉ định một hoặc nhiều phù hợp. Ví dụ: ví dụ về chính sách sau đây thể hiện một mẫu khớp duy nhất cho đường dẫn URI:
<ExtractVariables name="ExtractVariables-1"> <Source>request</Source> <URIPath> <Pattern ignoreCase="true">/a/{pathSeg}</Pattern> </URIPath> <VariablePrefix>urirequest</VariablePrefix> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> </ExtractVariables>
Trong ví dụ này, biến urirequest.pathSeg được đặt vào bất kỳ nội dung nào xuất hiện trong proxy.pathsuffix sau "/a/". Ví dụ: giả sử đường dẫn cơ sở cho Proxy API của bạn là /basepath/v1 . Với một yêu cầu đến vào http://myCo.com/basepath/v1/a/b biến được đặt thành "b".
Chỉ định nhiều mẫu
Bạn có thể chỉ định nhiều mẫu để khớp, tương ứng với thẻ <Pattern>, trong đó:
- Tất cả mẫu đều được kiểm tra để so khớp.
- Nếu không có mẫu nào khớp, chính sách sẽ không làm gì cả và(các) biến sẽ không đã tạo.
- Nếu có nhiều mẫu trùng khớp, thì mẫu có phân đoạn đường dẫn dài nhất sẽ được sử dụng cho trích xuất.
- Nếu hai mẫu khớp có cùng các đoạn đường dẫn dài nhất, thì mẫu được chỉ định đầu tiên trong chính sách này được dùng để trích xuất.
Trong ví dụ tiếp theo, bạn tạo một chính sách chứa 3 mẫu phù hợp cho URI đường dẫn:
<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> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> </ExtractVariables>
Giả sử, đối với một Proxy API có đường dẫn cơ sở là /basepath/v1 , URL yêu cầu đến cho proxy API có dạng sau:
http://myCo.com/basepath/v1/a/b
Trong ví dụ này, mẫu đầu tiên khớp với URI và biến urirequest.pathSeg là được đặt thành "b".
Nếu URL yêu cầu là:
http://myCo.com/basepath/v1/a/b/c/d
...thì mẫu thứ ba sẽ khớp và biến urirequest.pathSeg là được đặt thành "d".
Chỉ định mẫu có nhiều biến
Bạn có thể chỉ định nhiều biến trong mẫu phù hợp. Ví dụ: bạn chỉ định một phù hợp với hai biến:
<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/{pathSeg1}/c/{pathSeg2}</Pattern> </URIPath> <VariablePrefix>urirequest</VariablePrefix> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> </ExtractVariables>
Một lần nữa giả sử một Proxy API có đường dẫn cơ sở là /basepath/v1 cho yêu cầu đến URL:
http://myCo.com/basepath/v1/a/b/c/d
...biến urirequest.pathSeg1 là đặt thành "b" và biến urirequest.pathSeg2 là được đặt thành "d".
Khớp nhiều thực thể trong mẫu
Bạn cũng có thể so khớp các mẫu khi có nhiều thực thể của một mục trùng tên. Ví dụ: bạn có thể tạo một yêu cầu chứa nhiều tham số truy vấn hoặc nhiều tiêu đề có cùng tên. Yêu cầu sau đây chứa 2 tham số truy vấn có tên là "w":
http://myCo.com/basepath/v1/a/b/c/d?w=1&w=2
Để tham chiếu các tham số truy vấn này trong chính sách ExtractVariable, bạn sử dụng chỉ mục, trong đó trường hợp đầu tiên của tham số truy vấn không có chỉ mục, trường hợp thứ hai nằm ở chỉ mục 2, trường hợp thứ ba ở chỉ mục 3, v.v. Ví dụ: chính sách sau trích xuất giá trị của tham số truy vấn thứ hai có tên là "w" trong yêu cầu:
<ExtractVariables name="ExtractVariables-1"> <Source>request</Source> <QueryParam name="w.2"> <Pattern ignoreCase="true">{secondW}</Pattern> </QueryParam> <VariablePrefix>urirequest</VariablePrefix> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> </ExtractVariables>
Biến urirequest.secondW là được đặt thành "2". Nếu tham số truy vấn thứ hai bị bỏ qua khỏi yêu cầu, thì biến urirequest.secondW là trống. Bạn có thể sử dụng tính năng lập chỉ mục bất cứ khi nào có nhiều mục trùng tên trong yêu cầu.
Sử dụng ký tự đặc biệt trong mẫu
Khi so khớp đường dẫn URI, bạn có thể sử dụng "*" và "**" ký tự đại diện trong mẫu, trong đó:
- "*" khớp với bất kỳ phân đoạn nào của đường dẫn
- "**" khớp với nhiều phân đoạn của đường dẫn
Ví dụ: bạn chỉ định các mẫu cho phần tử <URIPath> như ví dụ dưới đây bên dưới:
<URIPath> <Pattern ignoreCase="true">/a/*/{id}</Pattern> <Pattern ignoreCase="true">/a/**/{id}</Pattern> </URIPath>
Mẫu đầu tiên khớp với các yêu cầu có hậu tố (phần đường dẫn URI theo sau đường dẫn cơ sở) chẳng hạn như "/a/b/c", "/a/foo/bar", v.v. Mẫu thứ hai khớp với số lượng đường dẫn bất kỳ các phân đoạn sau "/a/", chẳng hạn như "/a/foo/bar/baz/c", cũng như "/a/b/c" và "/a/foo/bar".
Khi chỉ định các mẫu để truy vấn tham số, tiêu đề và tham số biểu mẫu, ký tự "*" chỉ định khớp với số lượng ký tự bất kỳ. Ví dụ: khi khớp tiêu đề, hãy chỉ định mẫu là:
*;charset={encoding}
Mẫu này khớp với các giá trị "text/xml; character=UTF-16" và "ứng dụng/xml; ký tự=ASCII".
Nếu giá trị được chuyển đến chính sách ExtractVariables chứa một ký tự đặc biệt, chẳng hạn như "{", hãy sử dụng "%" để thoát khỏi ký tự đó. Ví dụ sau thoát khỏi "{" và "}" ký tự trong mẫu vì chúng được dùng dưới dạng ký tự cố định trong giá trị của truy vấn tham số:
<QueryParam> <Pattern ignoreCase="true">%{user%} {name}</Pattern> </QueryParam>
Trong ví dụ này, mẫu khớp với giá trị "{user} Steve" nhưng không phải giá trị "người dùng Steve".
So khớp JSON và XML
Khi trích xuất dữ liệu từ JSON và XML, bạn sẽ chỉ định một hoặc nhiều thẻ <Variable> trong chính sách. Thẻ <Variable> chỉ định tên của biến đích nơi lưu trữ thông tin đã trích xuất và JsonPath (JSON) hoặc XPATH (XML) vào thông tin đã trích xuất.
Tất cả thẻ <Variable> trong chính sách sẽ được đánh giá để bạn có thể điền nhiều biến từ một chính sách. Nếu thẻ <Variable> không đánh giá một trường hợp lệ trong JSON hoặc XML, thì biến tương ứng sẽ không đã tạo.
Ví dụ sau đây thể hiện chính sách ExtractVariables (Trích xuất Biến) điền sẵn 2 biến từ Nội dung JSON của phản hồi:
<ExtractVariables name="ExtractVariables-3"> <Source>response</Source> <JSONPayload> <Variable name="latitude" type="float"> <JSONPath>$.results[0].geometry.location.lat</JSONPath> </Variable> <Variable name="longitude" type="float"> <JSONPath>$.results[0].geometry.location.lng</JSONPath> </Variable> </JSONPayload> <VariablePrefix>geocoderesponse</VariablePrefix> </ExtractVariables>
Ghi vào cùng một biến ở nhiều vị trí
Hãy thận trọng khi chọn tên cho các biến để đặt. Chính sách này sẽ thực thi tuần tự từ mẫu trích xuất đầu tiên cho đến mẫu cuối cùng. Nếu chính sách ghi giá trị vào cùng một biến từ nhiều vị trí, lần ghi cuối cùng vào chính sách sẽ xác định giá trị của biến. (Đây có thể là những gì bạn muốn.)
Ví dụ: bạn muốn trích xuất một giá trị mã thông báo có thể được chuyển trong tham số truy vấn hoặc trong tiêu đề, như minh hoạ dưới đây:
<!-- If token only in query param, the query param determines the value. If token is found in both the query param and header, header sets value. --> <QueryParam name="token"> <Pattern ignoreCase="true">{tokenValue}</Pattern> </QueryParam> <!-- Overwrite tokenValue even if it was found in query parameter. --> <Header name="Token"> <Pattern ignoreCase="true">{tokenValue}</Pattern> </Header>
Kiểm soát điều sẽ xảy ra khi không có kết quả trùng khớp
Nếu mẫu không khớp thì biến tương ứng không được tạo. Do đó, nếu một chính sách khác lại tham chiếu đến biến, điều này có thể gây ra lỗi.
Một lựa chọn là đặt <IgnoreUnresolvedVariables>
thành
true trong chính sách tham chiếu đến biến để định cấu hình chính sách nhằm xử lý
bất kỳ biến không thể giải quyết nào dưới dạng chuỗi trống (null):
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
Tham chiếu phần tử
Tham chiếu phần tử mô tả các phần tử và thuộc tính của ExtractVariables .
<ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1"> <DisplayName>Extract Variables 1</DisplayName> <Source clearPayload="true|false">request</Source> <VariablePrefix>myprefix</VariablePrefix> <IgnoreUnresolvedVariables>true|false</IgnoreUnresolvedVariables> <URIPath> <Pattern ignoreCase="false">/accounts/{id}</Pattern> </URIPath> <QueryParam name="code"> <Pattern ignoreCase="true">DBN{dbncode}</Pattern> </QueryParam> <Header name="Authorization"> <Pattern ignoreCase="false">Bearer {oauthtoken}</Pattern> </Header> <FormParam name="greeting"> <Pattern>hello {user}</Pattern> </FormParam> <Variable name="request.content"> <Pattern>hello {user}</Pattern> </Variable> <JSONPayload> <Variable name="name"> <JSONPath>{example}</JSONPath> </Variable> </JSONPayload> <XMLPayload stopPayloadProcessing="false"> <Namespaces/> <Variable name="name" type="boolean"> <XPath>/test/example</XPath> </Variable> </XMLPayload> </ExtractVariables>
<ExtractVariables> thuộc tính
<ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
Bảng sau đây mô tả những thuộc tính chung cho tất cả phần tử mẹ của chính sách:
Thuộc tính | Mô tả | Mặc định | Sự hiện diện |
---|---|---|---|
name |
Tên nội bộ của chính sách. Giá trị của thuộc tính (Không bắt buộc) Bạn có thể dùng phần tử |
Không áp dụng | Bắt buộc |
continueOnError |
Đặt thành Đặt thành |
false | Không bắt buộc |
enabled |
Hãy đặt thành Đặt thành |
đúng | Không bắt buộc |
async |
Thuộc tính này không được dùng nữa. |
false | Không được dùng nữa |
<DisplayName> phần tử
Hãy sử dụng cùng với thuộc tính name
để gắn nhãn chính sách trong phần
trình chỉnh sửa proxy giao diện người dùng quản lý có tên ngôn ngữ tự nhiên khác.
<DisplayName>Policy Display Name</DisplayName>
Mặc định |
Không áp dụng Nếu bạn bỏ qua phần tử này, giá trị của thuộc tính |
---|---|
Sự hiện diện | Không bắt buộc |
Loại | Chuỗi |
<Source> phần tử
(Không bắt buộc) Chỉ định biến cần được phân tích cú pháp. Giá trị của
<Source>
mặc định là message
. Giá trị message
có phụ thuộc vào ngữ cảnh. Trong luồng yêu cầu, message
phân giải thành thông báo yêu cầu. Trong
một quy trình phản hồi, thì message
sẽ xử lý thành tin nhắn phản hồi.
Mặc dù bạn thường sử dụng chính sách này để trích xuất thông tin từ thư yêu cầu hoặc thư phản hồi, bạn
có thể sử dụng nó để trích xuất thông tin từ bất kỳ biến nào. Ví dụ: bạn có thể sử dụng báo cáo này để trích xuất
thông tin từ một pháp nhân được tạo theo chính sách AccessEntity từ dữ liệu
được trả về bởi Dịch vụ
Chính sách về chú thích hoặc trích xuất thông tin từ đối tượng XML hoặc JSON.
Nếu <Source>
không thể được giải quyết hoặc phân giải thành một loại không phải thông báo,
thì chính sách đó sẽ không phản hồi.
<Source clearPayload="true|false">request</Source>
Mặc định: | tin nhắn |
Sự hiện diện: | Không bắt buộc |
Loại: | Chuỗi |
Thuộc tính
Thuộc tính | Mô tả | Mặc định | Sự hiện diện | Loại |
---|---|---|---|---|
clearPayload |
Đặt thành true nếu bạn muốn xoá tải trọng được chỉ định trong
<Source> sau khi trích xuất dữ liệu từ đó. |
false |
Không bắt buộc | Boolean |
<VariablePrefix> phần tử
(Không bắt buộc) Tên biến hoàn chỉnh được tạo bằng cách kết hợp
<VariablePrefix>
, một dấu chấm và tên mà bạn xác định trong {dấu ngoặc nhọn} trong
Phần tử <Pattern>
hoặc phần tử <Variable>. Ví dụ:
myprefix.id
, myprefix.dbncode
hoặc myprefix.oauthtoken.
<VariablePrefix>myprefix</VariablePrefix>
Ví dụ: giả sử giá trị của tên là "người dùng".
- Nếu bạn không chỉ định
<VariablePrefix>
, thì các giá trị được trích xuất sẽ được gán cho biến có tênuser
. - Nếu
<VariablePrefix>
được chỉ định là tiền tố của tôi, thì tiền tố được trích xuất các giá trị này được gán cho biến có tênmyprefix.user
.
Mặc định: | Không áp dụng |
Sự hiện diện: | Không bắt buộc |
Loại: | Chuỗi |
<IgnoreUnresolvedVariables> phần tử
(Không bắt buộc) Đặt thành true
để coi mọi biến không thể giải quyết là một chuỗi trống
(rỗng). Hãy đặt thành false
nếu bạn muốn chính sách gửi thông báo lỗi khi bất kỳ thành phần nào được tham chiếu đến
là không thể giải quyết được.
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
Mặc định: | Sai |
Sự hiện diện: | Không bắt buộc |
Loại: | Boolean |
Nếu một tệp tham chiếu diễn ra ở trạng thái không được giải quyết trong <XMLPayload>
, thì chính sách này sẽ gửi đi
lỗi sau đây:
{ "fault":{ "faultstring":"Unresolved xpath path in policy policy_name.", "detail":{ "errorcode":"steps.extractvariables.InvalidXPath" } } }
<URIPath> phần tử
(Không bắt buộc, nhưng hãy xem hàng Sự hiện diện trong bảng bên dưới để biết thêm thông tin.) Trích xuất một giá trị từ proxy.pathsuffix của thông báo nguồn yêu cầu. Đường dẫn được áp dụng cho mẫu là proxy.pathsuffix, không bao gồm đường dẫn cơ sở cho Proxy API. Nếu thì thông báo nguồn sẽ phân giải thành loại thông báo là phản hồi, thì phần tử này sẽ không làm gì cả.
<URIPath> <Pattern ignoreCase="false">/accounts/{id}</Pattern> </URIPath>
Có thể sử dụng nhiều phần tử <Pattern>:
<URIPath> <Pattern ignoreCase="false">/accounts/{id}</Pattern> <Pattern ignoreCase="false">/accounts/{id}/transactions/{index}</Pattern> </URIPath>
Mặc định: | Không áp dụng |
Sự hiện diện: | Không bắt buộc. Tuy nhiên, bạn phải cung cấp ít nhất một trong các thông tin sau:
<URIPath> , <QueryParam> , <Header>
<FormParam> , <JSONPayload> hoặc
<XMLPayload>. |
Loại: | Không áp dụng |
Thuộc tính
Thuộc tính | Mô tả | Mặc định | Sự hiện diện | Loại |
---|---|---|---|---|
ignoreCase | Chỉ định để bỏ qua chữ hoa chữ thường khi so khớp mẫu cha. |
false |
Không bắt buộc | Boolean |
<QueryParam> phần tử
(Không bắt buộc, nhưng hãy xem hàng Sự hiện diện trong bảng bên dưới để biết thêm thông tin.) Trích xuất một giá trị từ tham số truy vấn được chỉ định của thông báo nguồn yêu cầu. Nếu thông báo nguồn phân giải thành loại thông báo là phản hồi, thì phần tử này sẽ không có gì.
<QueryParam name="code"> <Pattern ignoreCase="true">DBN{dbncode}</Pattern> </QueryParam>
Nếu nhiều tham số truy vấn có cùng tên, hãy sử dụng chỉ mục để tham chiếu đến các tham số đó:
<QueryParam name="w.2"> <Pattern ignoreCase="true">{secondW}</Pattern> </QueryParam>
Mặc định: | Không áp dụng |
Sự hiện diện: | Không bắt buộc. Tuy nhiên, bạn phải cung cấp ít nhất một trong các thông tin sau:
<URIPath> , <QueryParam> , <Header>
<FormParam> , <JSONPayload> hoặc
<XMLPayload>. |
Loại: | Không áp dụng |
Thuộc tính
Thuộc tính | Mô tả | Mặc định | Sự hiện diện | Loại |
---|---|---|---|---|
tên | Chỉ định tên của tham số truy vấn. Nếu nhiều tham số truy vấn có cùng tên, sử dụng tham chiếu được lập chỉ mục, trong đó phiên bản đầu tiên của tham số truy vấn không có chỉ mục, mục thứ hai ở chỉ mục 2, mục thứ ba ở chỉ mục 3, v.v. |
Không áp dụng |
Bắt buộc | Chuỗi |
<Header> phần tử
(Không bắt buộc, nhưng hãy xem hàng Sự hiện diện trong bảng bên dưới để biết thêm thông tin.) Trích xuất một giá trị từ tiêu đề HTTP được chỉ định của thông báo yêu cầu hoặc thông báo phản hồi được chỉ định. Nếu nhiều tiêu đề có cùng tên, giá trị của chúng sẽ được lưu trữ trong một mảng.
<!-- The name is the actual header name. --> <Header name="Authorization"> <!-- Provide a name for your new custom variable here. --> <Pattern ignoreCase="false">Bearer {oauthtoken}</Pattern> </Header>
Nếu nhiều tiêu đề có cùng tên, hãy sử dụng chỉ mục để tham chiếu từng tiêu đề trong mảng:
<Header name="myHeader.2"> <Pattern ignoreCase="true">{secondHeader}</Pattern> </Header>
Hoặc dưới đây để liệt kê tất cả các tiêu đề trong mảng:
<Header name="myHeader.values"> <Pattern ignoreCase="true">{myHeaders}</Pattern> </Header>
Mặc định: | Không áp dụng |
Sự hiện diện: | Không bắt buộc. Tuy nhiên, bạn phải cung cấp ít nhất một trong các thông tin sau:
<URIPath> , <QueryParam> , <Header>
<FormParam> , <JSONPayload> hoặc
<XMLPayload>. |
Loại: | Không áp dụng |
Thuộc tính
Thuộc tính | Mô tả | Mặc định | Sự hiện diện | Loại |
---|---|---|---|---|
tên | Chỉ định tên của tiêu đề mà bạn trích xuất giá trị. Nếu có nhiều
tiêu đề có cùng tên, hãy sử dụng tham chiếu được lập chỉ mục, trong đó bản sao đầu tiên của thuộc tính
tiêu đề không có chỉ mục, tiêu đề thứ hai ở chỉ mục 2, tiêu đề thứ ba ở chỉ mục 3, v.v. Hãy sử dụng
.values để lấy tất cả tiêu đề trong mảng. |
Không áp dụng |
Bắt buộc | Chuỗi |
<FormParam> phần tử
(Không bắt buộc, nhưng hãy xem hàng Sự hiện diện trong bảng bên dưới để biết thêm thông tin.) Trích xuất một giá trị
từ thông số biểu mẫu được chỉ định của thông báo yêu cầu hoặc thông báo phản hồi được chỉ định. Thông số biểu mẫu
chỉ có thể trích xuất được khi tiêu đề Content-Type
của thư được chỉ định là
application/x-www-form-urlencoded
<FormParam name="greeting"> <Pattern>hello {user}</Pattern> </FormParam>
Mặc định: | Không áp dụng |
Sự hiện diện: | Không bắt buộc. Tuy nhiên, bạn phải cung cấp ít nhất một trong các thông tin sau:
<URIPath> , <QueryParam> , <Header>
<FormParam> , <JSONPayload> hoặc
<XMLPayload>. |
Loại: | Không áp dụng |
Thuộc tính
Thuộc tính | Mô tả | Mặc định | Sự hiện diện | Loại |
---|---|---|---|---|
tên | Tên của thông số biểu mẫu mà bạn trích xuất giá trị. |
Không áp dụng |
Bắt buộc | Chuỗi |
<Variable> phần tử
(Không bắt buộc, nhưng hãy xem hàng Sự hiện diện trong bảng bên dưới để biết thêm thông tin.) Chỉ định tên của biến mà từ đó trích xuất giá trị.
<Variable name="myVar"> <Pattern>hello {user}</Pattern> </Variable>
Cách trích xuất hai giá trị từ biến:
<Variable name="myVar"> <Pattern>hello {firstName} {lastName}</Pattern> </Variable>
Mặc định: | Không áp dụng |
Sự hiện diện: | Không bắt buộc. Tuy nhiên, bạn phải cung cấp ít nhất một trong các thông tin sau:
<URIPath> , <QueryParam> , <Header>
<FormParam> , <JSONPayload> hoặc
<XMLPayload>. |
Loại: | Không áp dụng |
Thuộc tính
Thuộc tính | Mô tả | Mặc định | Sự hiện diện | Loại |
---|---|---|---|---|
tên | Tên của biến cần trích xuất giá trị. |
Không áp dụng |
Bắt buộc | Chuỗi |
<JSONPayload> phần tử
(Không bắt buộc, nhưng hãy xem hàng Sự hiện diện trong bảng bên dưới để biết thêm thông tin.) Chỉ định Thông báo theo định dạng JSON mà từ đó giá trị của biến sẽ được trích xuất. JSON chỉ được thực hiện khi tiêu đề Content-Type của thông báo là application/json.
<JSONPayload> <Variable name="name" type="string"> <JSONPath>{example}</JSONPath> </Variable> </JSONPayload>
Mặc định: | Không áp dụng |
Sự hiện diện: | Không bắt buộc. Tuy nhiên, bạn phải cung cấp ít nhất một trong các thông tin sau:
<URIPath> , <QueryParam> , <Header>
<FormParam> , <JSONPayload> hoặc
<XMLPayload>. |
Loại: | Không áp dụng |
<JSONPayload>/<Variable> phần tử
(Bắt buộc trong phần tử JSONPayload.) Chỉ định biến chứa giá trị được trích xuất được chỉ định. Bạn có thể đưa nhiều thẻ <Variable> vào phần tử <Variable> để điền nhiều biến.
<Variable name="name" type="string"> <JSONPath>{example}</JSONPath> </Variable>
Mặc định: | Không áp dụng |
Sự hiện diện: | Bắt buộc trong phần tử JSONPayload. |
Loại: | Không áp dụng |
Thuộc tính
Thuộc tính | Mô tả | Mặc định | Sự hiện diện | Loại |
---|---|---|---|---|
tên |
Chỉ định tên của biến sẽ chứa giá trị được trích xuất được chỉ định. |
tên |
Bắt buộc | Chuỗi |
loại | Chỉ định loại dữ liệu của giá trị biến. | Không áp dụng | Không bắt buộc |
Chuỗi. Chọn từ:
|
<JSONPayload>/<Variable>/<JSONPath> phần tử
(Bắt buộc trong phần tử JSONPayload:Biến.) Chỉ định đường dẫn JSON dùng để trích xuất từ một thông báo có định dạng JSON.
<Variable name="name"> <JSONPath>$.rss.channel.title</JSONPath> </Variable>
Mặc định: | Không áp dụng |
Sự hiện diện: | Bắt buộc |
Loại: | Chuỗi |
<XMLPayload> phần tử
(Không bắt buộc, nhưng hãy xem hàng Sự hiện diện trong bảng bên dưới để biết thêm thông tin.) Chỉ định
Thông báo theo định dạng XML mà từ đó giá trị của biến sẽ được trích xuất. Tải trọng XML
chỉ được trích xuất khi tiêu đề Content-Type
của thư
là text/xml
, application/xml
,
hoặc application/*+xml
.
<XMLPayload stopPayloadProcessing="false"> <Namespaces> <Namespace prefix="apigee">http://www.apigee.com</Namespace> <Namespace prefix="gmail">http://mail.google.com</Namespace> </Namespaces> <Variable name="name" type="boolean"> <XPath>/apigee:test/apigee:example</XPath> </Variable> </XMLPayload>
Mặc định: | Không áp dụng |
Sự hiện diện: | Không bắt buộc. Tuy nhiên, bạn phải cung cấp ít nhất một trong các thông tin sau:
<URIPath> , <QueryParam> , <Header>
<FormParam> , <JSONPayload> hoặc
<XMLPayload>. |
Loại: | Không áp dụng |
Thuộc tính
Thuộc tính | Mô tả | Mặc định | Sự hiện diện | Loại |
---|---|---|---|---|
stopPayloadProcessing |
Được đặt thành |
false |
Không bắt buộc | Boolean |
<XMLPayload>/<Namespaces> phần tử
(Không bắt buộc) Chỉ định không gian tên sẽ dùng trong quá trình đánh giá q. Nếu bạn đang sử dụng không gian tên trong biểu thức NETWORK, bạn phải khai báo không gian tên tại đây, như minh hoạ trong ví dụ sau.
<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>
Nếu hiện không sử dụng không gian tên trong biểu thức NETWORK, bạn có thể bỏ qua hoặc nhận xét trong
Phần tử <Namespaces>
, như trong ví dụ sau:
<XMLPayload stopPayloadProcessing="false"> <!-- <Namespaces/> --> <Variable name="legName" type="string"> <XPath>/Directions/route/leg/name</XPath> </Variable> </XMLPayload>
Mặc định: | Không áp dụng |
Sự hiện diện: | Không bắt buộc |
Loại: | Chuỗi |
Thuộc tính
Thuộc tính | Mô tả | Mặc định | Sự hiện diện | Loại |
---|---|---|---|---|
prefix |
Tiền tố không gian tên. |
Không áp dụng |
Bắt buộc | Chuỗi |
<XMLPayload>/<Variable> phần tử
(Không bắt buộc) Chỉ định biến mà giá trị đã trích xuất sẽ được chỉ định.
<Variable name="name" type="boolean"> <XPath>/test/example</XPath> </Variable>
Mặc định: | Không áp dụng |
Sự hiện diện: | Không bắt buộc |
Loại: | Không áp dụng |
Thuộc tính
Thuộc tính | Mô tả | Mặc định | Sự hiện diện | Loại |
---|---|---|---|---|
tên |
Chỉ định tên của biến sẽ chứa giá trị được trích xuất được chỉ định. |
tên |
Bắt buộc | Chuỗi |
loại | Chỉ định loại dữ liệu của giá trị biến. | Boolean | Không bắt buộc |
Chuỗi. Chọn từ:
|
<XMLPayload>/<Variable>/<XPath> phần tử
(Bắt buộc trong phần tử XMLPayload:Variable.) Chỉ định vai trò được xác định cho biến. Chỉ hỗ trợ biểu thức Wi-Fi 1.0.
<Variable name="name" type="boolean"> <XPath>/test/example</XPath> </Variable>
Ví dụ về không gian tên. Nếu sử dụng không gian tên trong biểu thức NETWORK, bạn phải khai báo
không gian tên trong mục <XMLPayload><Namespaces>
chính sách.
<Variable name="name" type="boolean"> <XPath>/foo:test/foo:example</XPath> </Variable>
Mặc định: | Không áp dụng |
Sự hiện diện: | Bắt buộc |
Loại: | Chuỗi |
Tham chiếu lỗi
Phần này mô tả các mã lỗi và thông báo lỗi được trả về cũng như các biến lỗi do Edge đặt khi chính sách này kích hoạt lỗi. Thông tin này rất quan trọng nếu bạn đang phát triển các quy tắc lỗi để xử lý lỗi. Để tìm hiểu thêm, hãy xem bài viết Những điều bạn cần biết về lỗi chính sách và Xử lý lỗi.
Lỗi thời gian chạy
Những lỗi này có thể xảy ra khi chính sách này thực thi.
Mã lỗi | Trạng thái HTTP | Nguyên nhân | Khắc phục |
---|---|---|---|
steps.extractvariables.ExecutionFailed |
500 |
Lỗi này xảy ra khi:
|
build |
steps.extractvariables.ImmutableVariable |
500 | Một biến được dùng trong chính sách là không thể thay đổi. Chính sách không thể đặt chế độ này biến. | |
steps.extractvariables.InvalidJSONPath |
500 | 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 phần tử
. 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, thì lỗi này sẽ xảy ra. |
build |
steps.extractvariables.JsonPathParsingFailure |
500 | Lỗi này xảy ra khi chính sách 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, chỉ số 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 hiện tại
luồng. |
build |
steps.extractvariables.SetVariableFailed |
500 | Lỗi này xảy ra nếu chính sách không thể đặt giá trị thành một biến. Lỗi thường 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 có cùng từ nhưng ở định dạng lồng nhau được phân tách bằng dấu chấm. | build |
steps.extractvariables.SourceMessageNotAvailable |
500 | Lỗi này xảy ra nếu thông báo
biến được chỉ định trong phần tử Source của chính sách
là:
|
build |
steps.extractvariables.UnableToCast |
500 | Lỗi này xảy ra nếu chính sách không thể truyền nội dung đã trích xuất giá trị cho 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 kiểu dữ liệu với một biến thuộc kiểu dữ liệu khác. | build |
Lỗi triển khai
Những lỗi này có thể xảy ra khi bạn triển khai proxy có chứa chính sách này.
Tên lỗi | Nguyên nhân | Khắc phục |
---|---|---|
NothingToExtract |
Nếu chính sách này không có bất kỳ phần tử nào URIPath , QueryParam ,
Header , FormParam , XMLPayload hoặc JSONPayload ,
việc triển khai Proxy API không thành công do không có tệp nào để trích xuất. |
build |
NONEmptyPrefixMappedToEmptyURI |
Lỗi này xảy ra nếu chính sách này có một tiền tố được xác định trong phần
Phần tử Namespace trong phần tử XMLPayload , nhưng không có URI nào
xác định. |
build |
DuplicatePrefix |
Lỗi này xảy ra nếu chính sách có cùng tiền tố được xác định lớn hơn
một lần trong phần tử Namespace trong phần tử XMLPayload . |
build |
NoXPathsToEvaluate |
Nếu chính sách này không có phần tử XPath trong phần tử
XMLPayload , thì việc triển khai proxy API sẽ không thành công do lỗi này.
|
build |
EmptyXPathExpression |
Nếu chính sách có biểu thức XPath trống trong XMLPayload
thì việc triển khai proxy API không thành công. |
build |
NoJSONPathsToEvaluate |
Nếu chính sách này không có phần tử JSONPath trong phần tử
JSONPayload , thì việc triển khai proxy API sẽ không thành công do lỗi này. |
build |
EmptyJSONPathExpression |
Nếu chính sách có biểu thức XPath trống trong
XMLPayload , thì việc triển khai proxy API sẽ không thành công. |
build |
MissingName |
Nếu chính sách này không có thuộc tính name trong bất kỳ chính sách nào
như QueryParam , Header , FormParam hoặc
Variable , nếu cần, thì việc triển khai proxy API sẽ không thành công. |
build |
PatternWithoutVariable |
Nếu chính sách không có biến được chỉ định trong phần tử Pattern ,
thì việc triển khai proxy API không thành công. Phần tử Pattern yêu cầu tên của
biến lưu trữ dữ liệu đã trích xuất. |
build |
CannotBeConvertedToNodeset |
Nếu chính sách có biểu thức XPath trong đó loại Variable
được định nghĩa là nodeset,
nhưng không chuyển đổi được biểu thức thành tập hợp nút thì việc triển khai proxy API không thành công. |
build |
JSONPathCompilationFailed |
Chính sách này không thể biên dịch một đường dẫn JSON được chỉ định. | |
InstantiationFailed |
Không thể tạo thực thể cho chính sách này. | |
XPathCompilationFailed |
Nếu tiền tố hoặc giá trị dùng trong phần tử XPath không thuộc bất kỳ giá trị nào
không gian tên đã khai báo trong chính sách, sau đó triển khai proxy API
không thành công. |
build |
InvalidPattern |
Nếu định nghĩa phần tử Pattern không hợp lệ trong bất kỳ phần tử nào như URIPath ,
QueryParam , Header , FormParam , XMLPayload
hoặc JSONPayload trong chính sách, thì việc triển khai
Proxy API không thành công.
|
build |
Biến lỗi
Các biến này được đặt khi chính sách này kích hoạt lỗi trong thời gian chạy. Để biết thêm thông tin, xem phần Bạn cần biết về các lỗi chính sách.
Biến | Trong đó | Ví dụ: |
---|---|---|
fault.name="fault_name" |
fault_name là tên của lỗi, như được liệt kê trong bảng Lỗi thời gian chạy ở trên. Tên lỗi là phần cuối cùng của mã lỗi. | fault.name = "SourceMessageNotAvailable" |
extractvariables.policy_name.failed |
policy_name là tên do người dùng chỉ định của chính sách gây ra lỗi. | extractvariables.EV-ParseJsonResponse.failed = true |
Ví dụ về phản hồi khi gặp lỗi
{ "fault":{ "detail":{ "errorcode":"steps.extractvariables.SourceMessageNotAvailable" }, "faultstring":"request message is not available for ExtractVariable: EV-ParseJsonResponse" } }
Ví dụ về quy tắc lỗi
<FaultRule name="Extract Variable Faults"> <Step> <Name>AM-CustomErrorMessage</Name> <Condition>(fault.name = "SourceMessageNotAvailable") </Condition> </Step> <Condition>(extractvariables.EM-ParseJsonResponse.failed = true) </Condition> </FaultRule>
Giản đồ
Chủ đề có liên quan
Phân tích API nội dung tin nhắn bằng số liệu phân tích tuỳ chỉnh