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
Cung cấp quyền truy cập dựa trên chính sách vào một cửa hàng Lưu trữ giá trị khoá (KVM) có trong Apigee Edge. Bạn có thể lưu trữ, truy xuất và xoá các cặp khoá/giá trị khỏi bản đồ hiện có đã đặt tên bằng cách định cấu hình các chính sách KeyValueMapOperations chỉ định các thao tác PUT, GET hoặc DELETE. (Chính sách phải thực hiện ít nhất một trong những thao tác này.)
Video
Hãy xem các video sau để tìm hiểu thêm về KVM.
Video | Nội dung mô tả |
---|---|
Tại sao nên sử dụng Bản đồ giá trị khoá? | Tìm hiểu lý do bạn cần KVM và cách chúng hoạt động. |
Tạo KVM bằng giao diện người dùng và truy xuất KVM trong thời gian chạy | Tạo một KVM, truy xuất giá trị của nó bằng chính sách KVM và chèn giá trị vào yêu cầu API bằng các biến luồng. |
Tạo và cập nhật KVM trong thời gian chạy API | Tạo KVM trong thời gian chạy API bằng chính sách KVM. |
Lưu KVM vào bộ nhớ đệm để tăng hiệu suất | Cải thiện hiệu suất của Chính sách KVM bằng cách lưu dữ liệu vào bộ nhớ đệm. |
Lưu trữ KVM đã mã hoá | Lưu trữ thông tin nhạy cảm trong KVM ở định dạng mã hoá và truy xuất giá trị trong thời gian chạy bằng cách sử dụng chính sách KVM và các biến riêng tư. |
Quản lý quyền truy cập bằng phạm vi KVM | Hạn chế KVM trong tổ chức, môi trường, proxy API hoặc bản sửa đổi proxy API bằng cách sử dụng thuộc tính phạm vi chính sách KVM. |
Xoá các mục KVM trong thời gian chạy API | Xoá các mục KVM trong thời gian chạy API bằng thao tác DELETE của chính sách KVM. |
Mẫu
PUT KVM bằng một giá trị cố định
Khi chạy chính sách sau đây, chính sách sẽ tạo một KVM đã mã hoá có tên là FooKVM
, sau đó tạo một khoá có tên là FooKey_1
với hai giá trị được đặt bằng các chuỗi giá trị cố định foo
và bar
(không được đặt bằng các giá trị được trích xuất từ các biến). Khi bạn GET
khoá trong ví dụ tiếp theo, bạn chỉ định một số chỉ mục để truy xuất giá trị mình muốn.
<KeyValueMapOperations async="false" continueOnError="false" enabled="true" name="FooKVM" mapIdentifier="FooKVM"> <DisplayName>FooKVM</DisplayName> <ExpiryTimeInSecs>86400</ExpiryTimeInSecs> <Scope>environment</Scope> <Put> <Key> <Parameter>FooKey_1</Parameter> </Key> <Value>foo</Value> <Value>bar</Value> </Put> </KeyValueMapOperations>
Xin lưu ý rằng phạm vi là "môi trường". Điều đó có nghĩa là bạn có thể thấy KVM trong giao diện người dùng quản lý trong mục API > Environment Configuration > Key Value Maps (API > Cấu hình môi trường > Bản đồ giá trị khoá). Các KVM hiển thị trên trang đó đều thuộc phạm vi của môi trường đã chọn.
GET KVM từ một giá trị cố định
Chính sách này xem xét bản đồ FooKVM
trong ví dụ trước, lấy giá trị thứ hai (index="2") từ khoá FooKey_1
và lưu trữ giá trị đó trong một biến tên là foo_variable
.
<KeyValueMapOperations mapIdentifier="FooKVM" async="false" continueOnError="false" enabled="true" name="GetKVM"> <DisplayName>GetKVM</DisplayName> <ExpiryTimeInSecs>86400</ExpiryTimeInSecs> <Scope>environment</Scope> <Get assignTo="foo_variable" index="2"> <Key> <Parameter>FooKey_1</Parameter> </Key> </Get> </KeyValueMapOperations>
PUT KVM bằng một biến
Một ví dụ đơn giản về sơ đồ khoá-giá trị hữu ích là dịch vụ rút ngắn URL. Bản đồ khoá-giá trị có thể được định cấu hình để lưu trữ các URL rút gọn cùng với các URL đầy đủ tương ứng.
Mẫu chính sách này sẽ tạo một bản đồ khoá-giá trị. Chính sách này PUT một khoá có hai giá trị được liên kết vào một bản đồ khoá/giá trị có tên là "urlMapper".
<KeyValueMapOperations name="putUrl" mapIdentifier="urlMapper"> <Scope>apiproxy</Scope> <Put override="true"> <Key> <Parameter ref="urlencoding.requesturl.hashed"/> </Key> <Value ref="urlencoding.longurl.encoded"/> <Value ref="request.queryparam.url"/> </Put> </KeyValueMapOperations>
Khoá trong ví dụ này, urlencoding.requesturl.hashed
, là một ví dụ về biến tuỳ chỉnh. URL yêu cầu đã băm sẽ được tạo bằng mã (ví dụ: JavaScript hoặc Java), sau đó được lưu trữ trong biến này, nơi chính sách KeyValueMapOperations có thể truy cập vào URL đó.
Đối với mỗi khoá, requesturl.hashed
, hai giá trị được lưu trữ:
- Nội dung của biến tuỳ chỉnh có tên
urlencoding.longurl.encoded
- Nội dung của biến được xác định trước
request.queryparam.url
Ví dụ: khi chính sách này thực thi trong thời gian chạy, giá trị của các biến có thể như sau:
urlencoding.requesturl.hashed: ed24e12820f2f900ae383b7cc4f2b31c402db1be
urlencoding.longurl.encoded: http://tinyurl.com/38lwmlr
request.queryparam.url: http://apigee.com
Bản đồ và mục nhập khoá/giá trị sau đây sẽ được tạo trong kho khoá/giá trị của Edge và trong phạm vi proxy API mà chính sách đính kèm:
{ "entry" :[ { "name" : "ed24e12820f2f900ae383b7cc4f2b31c402db1be", "value" : "http://tinyurl.com/38lwmlr,http://apigee.com" } ], "name" : "urlMapper" }
Mục nhập này sẽ vẫn tồn tại cho đến khi bị xoá. Các mục nhập kho khoá/giá trị được phân phối trên các thực thể của Edge đang chạy trên đám mây.
GET KVM từ một biến
Một ví dụ đơn giản về sơ đồ khoá-giá trị hữu ích là dịch vụ "rút ngắn" URL. Bản đồ khoá-giá trị có thể được định cấu hình để lưu trữ các URL rút gọn cùng với các URL đầy đủ tương ứng.
Để truy xuất giá trị của mục nhập bản đồ khoá/giá trị, chẳng hạn như giá trị trên thẻ KeyValueMapOperations PUT, hãy định cấu hình một chính sách để GET bản đồ giá trị khoá:
<KeyValueMapOperations name="getUrl" mapIdentifier="urlMapper"> <Scope>apiproxy</Scope> <Get assignTo="urlencoding.shorturl" index='1'> <Key> <Parameter ref="urlencoding.requesturl.hashed"/> </Key> </Get> </KeyValueMapOperations>
Khi chính sách này được thực thi, nếu giá trị của biến
urlencoding.requesturl.hashed
là
ed24e12820f2f900ae383b7cc4f2b31c402db1be
, thì biến tuỳ chỉnh có tên
urlencoding.shorturl
sẽ được đặt bằng giá trị
http://tinyurl.com/38lwmlr
.
Giờ đây, dữ liệu đã được truy xuất, các chính sách và mã khác có thể truy cập vào dữ liệu bằng cách trích xuất giá trị từ các biến đó.
NHẬN giá trị mã hóa từ KVM
Nếu bản đồ khoá-giá trị được mã hoá, hãy truy xuất các giá trị bằng cách sử dụng tiền tố "private.
" trong giá trị thuộc tính assignTo
. Trong ví dụ này, biến private.encryptedVar
chứa giá trị đã giải mã của khoá foo
của bản đồ giá trị khoá. Để biết thông tin về cách tạo bản đồ giá trị khoá đã mã hoá, hãy xem chủ đề "tạo" của API quản lý bản đồ khoá/giá trị.
<KeyValueMapOperations name="getEncrypted" mapIdentifier="encrypted_map"> <Scope>apiproxy</Scope> <Get assignTo="private.encryptedVar" index='1'> <Key> <Parameter>foo</Parameter> </Key> </Get> </KeyValueMapOperations>
Giờ đây, dữ liệu đã được truy xuất, các chính sách và mã khác có thể truy cập vào dữ liệu bằng cách trích xuất giá trị từ biến đó.
Tham chiếu phần tử
Tài liệu tham chiếu phần tử mô tả các phần tử và thuộc tính của chính sách KeyValueMapOperations:
<KeyValueMapOperations async="false" continueOnError="false" enabled="true" name="Key-Value-Map-Operations-1" mapIdentifier="urlMapper" > <DisplayName>Key Value Map Operations 1</DisplayName> <Scope>environment</Scope> <ExpiryTimeInSecs>300</ExpiryTimeInSecs> <InitialEntries> <Entry> <Key> <Parameter>key_name_literal</Parameter> </Key> <Value>value_literal</Value> </Entry> <Entry> <Key> <Parameter>variable_name</Parameter> </Key> <Value>value_1_literal</Value> <Value>value_2_literal</Value> </Entry> </InitialEntries> <Put override="false"> <Key> <Parameter>key_name_literal</Parameter> </Key> <Value ref="variable_name"/> </Put> <Get assignTo="myvar" index="1"> <Key> <Parameter ref="variable_name"/> </Key> </Get> <Delete> <Key> <Parameter>key_name_literal</Parameter> </Key> </Delete> </KeyValueMapOperations>
Các thuộc tính <KeyValueMapOperations>
Ví dụ sau đây cho thấy các thuộc tính trên thẻ <KeyValueMapOperations>
:
<KeyValueMapOperations async="false" continueOnError="false" enabled="true" name="Key-Value-Map-Operations-1" mapIdentifier="map_name">
Bảng sau đây mô tả các thuộc tính dành riêng cho thẻ <KeyValueMapOperations>
:
Thuộc tính | Nội dung mô tả | Mặc định | Sự hiện diện |
---|---|---|---|
mapIdentifier |
Chỉ định một giá trị nhận dạng cần dùng khi truy cập vào bản đồ được tạo bằng chính sách này hoặc trong giao diện người dùng quản lý. Tên KVM có phân biệt chữ hoa chữ thường đối với Apigee Edge for Public Cloud.
Ví dụ: Nếu bạn loại trừ thuộc tính này, một KVM có tên là Trong phạm vi của tổ chức/môi trường/api proxy, bạn có thể sử dụng thuộc tính |
Không áp dụng | Không bắt buộc |
Bảng sau đây mô tả các thuộc tính chung cho tất cả phần tử mẹ của chính sách:
Thuộc tính | Nội dung 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 Nếu muốn, bạn có thể sử 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 |
Đặ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 |
Phần tử <DisplayName>
Sử dụng cùng với thuộc tính name
để gắn nhãn cho chính sách trong trình chỉnh sửa proxy giao diện người dùng quản lý bằng tên khác theo ngôn ngữ tự nhiên.
<DisplayName>Policy Display Name</DisplayName>
Mặc định |
Không áp dụng Nếu bạn bỏ qua phần tử này, thì giá trị thuộc tính |
---|---|
Sự hiện diện | Không bắt buộc |
Loại | Chuỗi |
<Xoá> phần tử
Xoá cặp khoá/giá trị được chỉ định. Bạn phải sử dụng ít nhất một trong các thuộc tính <Get>
, <Put>
hoặc <Delete>
.
Hãy nhớ chỉ định tên của KVM bằng thuộc tính mapIdentifier
của phần tử mẹ. Ví dụ:
<Delete> <Key> <Parameter>key_name_literal</Parameter> </Key> </Delete>
Mặc định | Không áp dụng |
---|---|
Sự hiện diện | Bắt buộc nếu không có <Get> hoặc <Put> . |
Loại | Không áp dụng |
Phần tử <Entry>
Các giá trị gốc cho bản đồ khoá-giá trị, được điền sẵn trong bản đồ khoá-giá trị khi khởi động.
Đối với Edge for Public Cloud, kích thước khoá tối đa là 2 KB. Ví dụ:
<InitialEntries> <Entry> <Key> <Parameter>key_name_literal</Parameter> </Key> <Value>v1</Value> </Entry> <Entry> <Key> <Parameter>key_name_variable</Parameter> </Key> <Value>v3</Value> <Value>v4</Value> </Entry> </InitialEntries>
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 |
Phần tử <ExclusiveCache>
Không dùng nữa. Thay vào đó, hãy sử dụng phần tử <Scope>
.
Phần tử <ExpiryTimeInSecs>
Chỉ định thời lượng tính bằng giây mà sau đó Edge làm mới giá trị đã lưu vào bộ nhớ đệm từ KVM được chỉ định.
Giá trị 0 hoặc -1 hoặc không bao gồm phần tử này có nghĩa là sử dụng giá trị mặc định là 300 giây. Ví dụ:
<ExpiryTimeInSecs>600</ExpiryTimeInSecs>
Mặc định | 300 (5 phút) |
---|---|
Sự hiện diện | Không bắt buộc |
Loại | Số nguyên |
KVM là một cơ chế lưu trữ dài hạn, lưu trữ các khoá và giá trị trong cơ sở dữ liệu NoSQL. Do đó, việc đọc từ KVM trong thời gian chạy có thể làm chậm hiệu suất proxy. Để cải thiện hiệu suất, Edge có một cơ chế tích hợp để lưu các khoá/giá trị KVM vào bộ nhớ đệm trong bộ nhớ trong thời gian chạy. Chính sách Hoạt động KVM này luôn đọc từ bộ nhớ đệm cho các hoạt động GET.
Phần tử <ExpiryTimeInSecs>
cho phép bạn kiểm soát thời gian lưu trữ các khoá/giá trị dùng trong chính sách trong bộ nhớ đệm trước khi làm mới lại từ KVM. Tuy nhiên, có một số điểm khác biệt giữa cách các thao tác GET và PUT ảnh hưởng đến thời hạn của bộ nhớ đệm.
GET – Lần đầu tiên thực thi thao tác GET của KVM, các khoá/giá trị yêu cầu từ KVM (có tên được chỉ định trong thuộc tính mapIdentifier
gốc của chính sách) sẽ được tải vào bộ nhớ đệm, tại đây các khoá/giá trị này vẫn sẽ được dùng để thực hiện các thao tác GET tiếp theo cho đến khi một trong các trường hợp sau xảy ra:
- Số giây được chỉ định trong
<ExpiryTimeInSecs>
sẽ hết hạn.
hoặc - Thao tác PUT trong chính sách KVM sẽ ghi đè các giá trị hiện có (sẽ được giải thích trong phần tiếp theo).
PUT – Thao tác PUT ghi các khoá/giá trị vào KVM được chỉ định. Nếu PUT ghi vào một khoá đã tồn tại trong bộ nhớ đệm, thì bộ nhớ đệm đó sẽ được làm mới ngay lập tức và hiện giữ giá trị mới là số giây được chỉ định trong phần tử <ExpiryTimeInSecs>
của chính sách.
Ví dụ: Lưu KVM vào bộ nhớ đệm
- Thao tác GET sẽ truy xuất giá trị "xếp hạng", thao tác này sẽ thêm giá trị "10" vào bộ nhớ đệm.
<ExpiryTimeInSecs>
của chính sách này là 60. - 30 giây sau, chính sách GET sẽ thực thi lại và truy xuất "10" từ bộ nhớ đệm.
- 5 giây sau, chính sách PUT cập nhật giá trị "xếp hạng" thành "8" và
<ExpiryTimeInSecs>
trong chính sách PUT là 20. Bộ nhớ đệm sẽ được làm mới ngay lập tức bằng giá trị mới. Giá trị này hiện được thiết lập để duy trì trong bộ nhớ đệm trong 20 giây. (Nếu thao tác PUT không xảy ra, thì bộ nhớ đệm ban đầu được điền bằng lệnh GET đầu tiên sẽ vẫn tồn tại thêm 30 giây nữa, còn lại so với 60 giây ban đầu.) - 15 giây sau, một GET khác sẽ thực thi và truy xuất giá trị là "8".
Phần tử <Get>
Truy xuất giá trị cho khoá đã chỉ định. Bạn phải sử dụng ít nhất một trong các thuộc tính <Get>
, <Put>
hoặc <Delete>
.
Hãy nhớ chỉ định tên của KVM bằng thuộc tính mapIdentifier
trên phần tử mẹ.
Bạn có thể đưa nhiều khối Get
vào chính sách này để truy xuất nhiều mục từ một KVM.
Mặc định | Không áp dụng |
---|---|
Sự hiện diện | Bắt buộc nếu không có <Put> hoặc <Delete> . |
Loại | Không áp dụng |
Nhận một mặt hàng từ KVM
<Get assignTo="myvar" index="1"> <Key> <Parameter>key_name_literal</Parameter> </Key> </Get>
Nhận nhiều mục từ KVM
Trong ví dụ sau, giả sử một KVM có các khoá và giá trị sau. Ngoài việc lưu trữ danh sách đang chạy gồm các bộ phim phổ biến nhất mọi thời đại, KVM còn lưu trữ tên đạo diễn cho tất cả các bộ phim lớn.
Khoá | Giá trị |
---|---|
top_movies | Công chúa cô dâu,bố già,công dân Kane |
Citizen Kane | Orson Welles |
Cô dâu công chúa | Rob Reiner |
Bố già | Francis Ford Coppola |
Dưới đây là cấu hình chính sách KVM mà chúng tôi có thể sử dụng để truy xuất bộ phim phổ biến nhất hiện nay cùng tên đạo diễn của bộ phim đó:
<Get assignTo="top.movie.pick" index="1"> <Key> <Parameter>top_movies</Parameter> </Key> </Get> <Get assignTo="movie.director"> <Key> <Parameter ref="top.movie.pick"/> </Key> </Get>
Khi proxy API được gọi, Edge sẽ tạo các biến sau đây mà bạn có thể sử dụng trong quy trình proxy API:
top.movie.pick=Princess Bride
movie.director=Rob Reiner
Thuộc tính
Bảng sau đây mô tả các thuộc tính của phần tử <Get>
:
Thuộc tính | Nội dung mô tả | Mặc định | Sự hiện diện |
---|---|---|---|
assignTo |
Biến mà bạn phải chỉ định giá trị được truy xuất. Nếu bản đồ giá trị khoá đã được mã hoá, hãy bắt đầu tên assignTo bằng " <Get assignTo="private.myvar"> Chính sách này sẽ thông báo lỗi nếu bạn cố truy xuất bản đồ giá trị khoá đã mã hoá mà không sử dụng tiền tố. Tiền tố (bắt buộc cho các mục đích bảo mật cơ bản trong quá trình gỡ lỗi) sẽ ẩn các giá trị đã mã hoá khỏi công cụ Theo dõi proxy API và phiên gỡ lỗi. Để biết thông tin về cách tạo bản đồ khoá-giá trị đã mã hoá, hãy xem các chủ đề "tạo" trong API quản lý khoá/giá trị của Google Maps và Tạo và chỉnh sửa bản đồ khoá giá trị môi trường. |
Không áp dụng | Bắt buộc |
index |
Số chỉ mục (trong chỉ mục dựa trên 1) của mục cần tìm nạp từ khoá nhiều giá trị.
Ví dụ: việc chỉ định Để xem ví dụ, hãy xem thẻ "Nhận giá trị đã mã hoá từ KVM" trong phần Mẫu. |
Không áp dụng | Không bắt buộc |
Phần tử <InitialEntries>
Các giá trị gốc cho bản đồ khoá giá trị, được điền sẵn trong bản đồ khoá-giá trị khi khởi tạo.
Hãy nhớ chỉ định tên của KVM bằng thuộc tính mapIdentifier
trên phần tử mẹ, ví dụ:
<InitialEntries> <Entry> <Key> <Parameter>key_name_literal</Parameter> </Key> <Value>v1</Value> </Entry> <Entry> <Key> <Parameter>key_name_variable</Parameter> </Key> <Value>v3</Value> <Value>v4</Value> </Entry> </InitialEntries>
Khi sử dụng phần tử này, khi bạn lưu chính sách trong giao diện người dùng quản lý trên phiên bản proxy đã triển khai hoặc triển khai gói proxy API chứa chính sách bằng phần tử này, (các) khoá sẽ được tạo tự động trong KVM (dưới dạng không mã hoá). Nếu giá trị trong chính sách khác với giá trị trong KVM, thì các giá trị trong KVM sẽ bị ghi đè khi triển khai proxy. Mọi khoá/giá trị mới đều được thêm vào KVM hiện có cùng với các khoá/giá trị hiện có.
Khoá và giá trị được điền bởi phần tử này phải là giá trị cố định. Ví dụ: <Parameter
ref="request.queryparam.key">
không được hỗ trợ trong phần tử này.
Kích thước khoá tối đa giới hạn ở 2 KB đối với cả Edge cho Đám mây công cộng và Edge cho Lưu trữ riêng tư. Giá trị KVM được giới hạn ở 2 KB.
Để tạo KVM đã mã hoá, hãy sử dụng API Quản lý bản đồ khoá/giá trị.
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 |
Phần tử <Key>
Chỉ định khoá trong một mục ánh xạ khoá/giá trị. Một khoá có thể là khoá kết hợp, nghĩa là bạn có thể thêm nhiều thông số để tạo khoá. Ví dụ: userID
và role
có thể được kết hợp để tạo ra một key
. Ví dụ:
<Key> <Parameter>key_name_literal</Parameter> </Key>
Hãy nhớ xem phần tử <Parameter> để biết thông tin cụ thể về cách đặt tên khoá.
Đối với Edge for Public Cloud, kích thước khoá được giới hạn ở 2 KB. Hãy xem bài viết Điểm khác biệt giữa Edge for Public Cloud API và Private Cloud API để biết thêm thông tin.
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 |
Phần tử <Parameter>
Chỉ định khoá trong một cặp khoá/giá trị. Phần tử này chỉ định tên khi tạo, đặt, truy xuất hoặc xoá cặp khoá/giá trị.
Bạn có thể chỉ định tên bằng cách sử dụng:
-
Một chuỗi giá trị cố định
<Key> <Parameter>literal</Parameter> </Key>
-
Một biến được truy xuất trong thời gian chạy, bằng cách sử dụng thuộc tính
ref
<Key> <Parameter ref="variable_name"/> </Key>
-
Kết hợp giá trị cố định và tệp tham chiếu biến
<Key> <Parameter>targeturl</Parameter> <Parameter ref="apiproxy.name"/> <Parameter>weight</Parameter> </Key>
Khi Phần tử khoá bao gồm nhiều phần tử Tham số, chuỗi khoá hiệu quả là chuỗi nối các giá trị của mỗi tham số, kết hợp bằng dấu gạch dưới kép. Ví dụ: trong ví dụ trên, nếu biến apiproxy.name
có giá trị "abc1", thì khoá hiệu quả sẽ là targeturl__abc1__weight
.
Cho dù bạn đang lấy, cập nhật hay xoá một mục nhập khoá/giá trị, tên khoá phải khớp với tên của khoá trong bản đồ giá trị khoá. Hãy xem phần Chỉ định và truy xuất tên khoá để biết nguyên tắc.
Mặc định | Không áp dụng |
---|---|
Sự hiện diện | Bắt buộc |
Loại | Chuỗi |
Thuộc tính
Bảng sau đây mô tả các thuộc tính của phần tử <Parameter>
:
Thuộc tính | Nội dung mô tả | Mặc định | Sự hiện diện |
---|---|---|---|
giới thiệu | Chỉ định tên của một biến có giá trị chứa tên chính xác của khoá mà bạn muốn tạo, lấy hoặc xoá. | Không áp dụng | Bắt buộc nếu không có giá trị cố định nào được cung cấp giữa các thẻ mở và đóng. Bị cấm nếu cung cấp giá trị cố định. |
Phần tử <Put>
Ghi một cặp khoá/giá trị vào bản đồ khoá-giá trị, cho dù bản đồ khoá-giá trị đã được mã hoá hay chưa được mã hoá. Nếu bản đồ giá trị khoá được chỉ định trong thuộc tính mapIdentifier
trên phần tử mẹ không tồn tại, thì bản đồ sẽ tự động được tạo (dưới dạng không mã hoá). Nếu bản đồ khoá-giá trị đã tồn tại, thì khoá/giá trị sẽ được thêm vào.
Để tạo bản đồ khoá giá trị đã mã hoá, hãy sử dụng API Quản lý bản đồ khoá/giá trị; hoặc xem bài viết Tạo và chỉnh sửa bản đồ giá trị khoá môi trường để tạo KVM trong phạm vi môi trường đã mã hoá trong giao diện người dùng.
<Put override="false"> <Key> <Parameter ref="mykeyvar"/> </Key> <Value ref="myvalvar1"/> </Put>
Mặc định | Không áp dụng |
---|---|
Sự hiện diện | Bắt buộc nếu không có <Get> hoặc <Delete> . |
Loại | Không áp dụng |
Thuộc tính
Bảng sau đây mô tả các thuộc tính của phần tử <Put>
:
Thuộc tính | Nội dung mô tả | Mặc định | Sự hiện diện |
---|---|---|---|
(cơ chế) ghi đè |
Nếu bạn đặt thành |
false |
Không bắt buộc |
Phần tử <Scope>
Xác định ranh giới hỗ trợ tiếp cận cho bản đồ khoá-giá trị. Phạm vi mặc định là environment
, nghĩa là theo mặc định, các mục ánh xạ sẽ được chia sẻ bởi tất cả các proxy API đang chạy trong một môi trường (ví dụ: kiểm thử hoặc sản phẩm). Nếu bạn đặt phạm vi thành apiproxy
, thì các mục trong bản đồ khoá-giá trị chỉ truy cập được bằng proxy API ghi giá trị vào bản đồ.
Xin lưu ý rằng khi truy cập vào một mục trong bản đồ hoặc bản đồ, bạn phải chỉ định cùng một giá trị phạm vi mà bạn đã sử dụng khi tạo bản đồ. Ví dụ: nếu bản đồ được tạo với phạm vi apiproxy
, bạn phải sử dụng phạm vi apiproxy
khi truy xuất các giá trị của phạm vi đó, thay đổi hoặc xoá các mục nhập.
<Scope>environment</Scope>
Mặc định | environment |
---|---|
Sự hiện diện | Không bắt buộc |
Loại | Chuỗi |
Giá trị hợp lệ: |
|
Phần tử <Giá trị>
Chỉ định giá trị của khoá. Bạn có thể chỉ định giá trị dưới dạng một chuỗi giá trị cố định hoặc sử dụng thuộc tính ref
làm biến cần được truy xuất trong thời gian chạy:
<!-- Specify a literal value --> <Value>literal<Value>
hoặc:
<!-- Specify the name of variable value to be populated at run time. --> <Value ref="variable_name"/>
Bạn cũng có thể bao gồm nhiều phần tử <Value>
để chỉ định một giá trị nhiều phần. Các giá trị được kết hợp trong thời gian chạy.
Trong ví dụ sau, hai khoá được thêm vào KVM:
- Khoá
k1
với giá trịv1,v2
- Khoá
k2
với giá trịv3,v4
<InitialEntries> <Entry> <Key> <Parameter>k1</Parameter> </Key> <Value>v1</Value> <Value>v2</Value> </Entry> <Entry> <Key> <Parameter>k2</Parameter> </Key> <Value>v3</Value> <Value>v4</Value> </Entry> </InitialEntries>
Trong ví dụ sau, một khoá được tạo với hai giá trị. Giả sử tên tổ chức là foo_org
, tên proxy API là bar
và môi trường là test
:
- Khoá
foo_org
với giá trịbar,test
<Put> <Key> <Parameter ref="organization.name"/> </Key> <Value ref="apiproxy.name"/> <Value ref="environment.name"/> </Put>
Mặc định | Không áp dụng |
---|---|
Sự hiện diện | Bắt buộc |
Loại | Chuỗi |
Thuộc tính
Bảng sau đây mô tả các thuộc tính của phần tử <Value>
:
Thuộc tính | Nội dung mô tả | Mặc định | Sự hiện diện |
---|---|---|---|
giới thiệu | Chỉ định tên của một biến có giá trị chứa(các) giá trị khoá mà bạn muốn đặt. | Không áp dụng | Bắt buộc nếu không có giá trị cố định nào được cung cấp giữa các thẻ mở và đóng. Bị cấm nếu cung cấp giá trị cố định. |
Tham chiếu lỗi
Lỗi được trả về từ chính sách Edge theo một định dạng nhất quán như mô tả trong Tài liệu tham khảo mã 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 đóng vai trò quan trọng trong việc phát triển các quy tắc lỗi để xử lý lỗi. Để tìm hiểu thêm, hãy xem 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 thực thi chính sách.
Mã lỗi | Trạng thái HTTP | Nguyên nhân | Khắc phục |
---|---|---|---|
steps.keyvaluemapoperations.SetVariableFailed |
500 |
Lỗi này xảy ra nếu bạn cố truy xuất giá trị từ bản đồ giá trị khoá đã mã hoá và đặt giá trị thành một biến có tên không có tiền tố |
build |
steps.keyvaluemapoperations.UnsupportedOperationException |
500 |
Lỗi này xảy ra nếu thuộc tính |
build |
Lỗi triển khai
Những lỗi này có thể xảy ra khi bạn triển khai proxy chứa chính sách này.
Tên lỗi | Nguyên nhân | Khắc phục |
---|---|---|
InvalidIndex |
Nếu thuộc tính index được chỉ định trong phần tử <Get> của chính sách Hoạt động bản đồ giá trị khoá là 0 hoặc là số âm, thì sẽ không triển khai được proxy API. Chỉ mục bắt đầu từ 1 , vì vậy chỉ mục có số nguyên hoặc số nguyên âm sẽ được coi là không hợp lệ.
|
build |
KeyIsMissing |
Lỗi này xảy ra nếu phần tử <Key> bị thiếu hoàn toàn hoặc phần tử <Parameter> bị thiếu trong phần tử <Key> bên dưới <Entry> của phần tử <InitialEntries> của Chính sách về hoạt động của bản đồ giá trị khoá.
|
build |
ValueIsMissing |
Lỗi này xảy ra nếu phần tử <Value> bị thiếu trong phần tử <Entry> của phần tử <InitialEntries> của chính sách Hoạt động bản đồ giá trị khoá. |
build |
Giản đồ
Lưu ý về cách sử dụng
Để biết thông tin tổng quan về bản đồ khoá-giá trị, hãy xem bài viết Làm việc với bản đồ khoá-giá trị.
Kho lưu trữ bản đồ giá trị khoá cung cấp một cơ chế lưu trữ gọn nhẹ cho dữ liệu được định dạng dưới dạng cặp khoá/giá trị. Bạn có thể truy cập các tập hợp này trong thời gian chạy thông qua chính sách hoặc mã. Bản đồ chứa mọi dữ liệu tuỳ ý ở định dạng key=value
.
Ví dụ: localhost=127.0.0.1
, zip_code=94110
hoặc first_name=felix
. Trong ví dụ đầu tiên, localhost
là một khoá và 127.0.0.1
là một giá trị. Mỗi cặp khoá/giá trị được lưu trữ dưới dạng một mục trong bản đồ khoá-giá trị. Bản đồ khoá-giá trị có thể lưu trữ nhiều mục nhập.
Sau đây là một ví dụ về cách sử dụng bản đồ khoá-giá trị. Giả sử bạn cần lưu trữ danh sách địa chỉ IP liên kết với nhiều môi trường phụ trợ. Bạn có thể tạo bản đồ khoá giá trị có tên ipAddresses
chứa danh sách các cặp khoá/giá trị dưới dạng mục nhập. Ví dụ: JSON này có thể biểu thị một bản đồ như vậy:
{ "entry" : [ { "name" : "Development", "value" : "65.87.18.18" }, { "name" : "Staging", "value" : "65.87.18.22" } ], "name" : "ipAddresses" }
Bạn có thể dùng cấu trúc này để tạo một kho lưu trữ địa chỉ IP mà các chính sách có thể sử dụng trong thời gian chạy để thực thi việc đưa IP vào danh sách cho phép hoặc từ chối, để chọn linh động một địa chỉ đích phụ trợ, v.v. Thông thường, chính sách KeyValueMapOperations được dùng để lưu trữ hoặc truy xuất thông tin dài hạn cần được sử dụng lại trong nhiều giao dịch yêu cầu/phản hồi.
Bạn có thể điều khiển sơ đồ khoá/giá trị thông qua chính sách KeyValueMapOperations hoặc trực tiếp thông qua API quản lý Apigee Edge. Hãy tham khảo tài liệu tham khảo API quản lý để biết thông tin chi tiết về API API bản đồ khoá/giá trị của tổ chức. Ví dụ: bạn có thể sử dụng API để tải các tập dữ liệu lớn lên kho khoá/giá trị hoặc tạo tập lệnh để quản lý các mục ánh xạ khoá/giá trị. Bạn sẽ cần tạo bản đồ khoá/giá trị bằng API trước khi truy cập vào API đó bằng chính sách KeyValueMapOperations.
Chỉ định và truy xuất tên khoá
Với các phần tử <Parameter>
và <Value>
, bạn có thể chỉ định một giá trị cố định (trong đó giá trị nằm giữa thẻ mở và thẻ đóng) hoặc sử dụng thuộc tính ref
để chỉ định tên của một biến có giá trị nên được sử dụng trong thời gian chạy.
Phần tử Tham số xứng đáng được đề cập đặc biệt, vì phần tử này xác định tên của khoá được tạo, cũng như tên khoá mà bạn muốn truy xuất hoặc xoá. Sau đây là hai ví dụ. Phương thức đầu tiên chỉ định tên khoá theo nghĩa đen và phương thức thứ hai chỉ định tên khoá bằng một biến. Giả sử những phương thức sau đây được dùng để tạo khoá trong KVM:
<Parameter>key_name_literal</Parameter> <Parameter ref="key.name.variable"/>
Trong trường hợp đầu tiên, giá trị cố định của "key_name_literal" được lưu trữ trong KVM dưới dạng tên khoá. Trong trường hợp thứ hai, bất kỳ giá trị nào trong key.name.variable
sẽ trở thành tên của khoá trong KVM. Ví dụ: nếu key.name.variable
chứa giá trị foo
, thì khoá sẽ có tên là "foo".
Khi bạn muốn truy xuất khoá và giá trị khoá bằng thao tác GET (hoặc xoá bằng thao tác DELETE), chế độ cài đặt <Parameter> cần phải khớp với tên khoá trong KVM. Ví dụ: nếu tên khoá trong KVM là "foo", bạn có thể chỉ định giá trị cố định bằng <Parameter>foo</Parameter>
hoặc chỉ định một biến chứa giá trị chính xác "foo", như sau: <Parameter ref="variable.containing.foo"/>
.