Przeglądasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X. Informacje
Co
Daje oparty na zasadach dostęp do magazynu mapy klucz-wartość (KVM) dostępnego w Apigee Edge. Pary klucz-wartość można przechowywać, pobierać i usuwać z nazwanych istniejących map przez skonfigurowanie zasad KeyValueMapOperations, które określają operacje PUT, GET lub DELETE. (Zasada musi wykonać co najmniej 1 z tych operacji).
Filmy
Aby dowiedzieć się więcej o KVM, obejrzyj te filmy.
Wideo | Opis |
---|---|
Dlaczego warto korzystać z Map klucz-wartość? | Dowiedz się, do czego są potrzebne i jak działają KVM. |
Utwórz KVM za pomocą interfejsu użytkownika i pobieraj KVM w czasie działania | Utwórz KVM, pobierz jej wartość za pomocą zasady KVM i wstrzyknij wartość do żądania do interfejsu API za pomocą zmiennych przepływu. |
Tworzenie i aktualizowanie KVM w środowisku wykonawczym interfejsu API | Utwórz KVM w środowisku wykonawczym interfejsu API, korzystając z zasady KVM. |
Buforuj KVM, aby zwiększyć wydajność | Zwiększ wydajność zasady KVM, przechowując dane w pamięci podręcznej. |
Przechowuj zaszyfrowane KVM | Przechowuj informacje poufne w KVM w zaszyfrowanym formacie i pobieraj wartość w czasie działania za pomocą zasady KVM i zmiennych prywatnych. |
Zarządzanie dostępem za pomocą zakresu KVM | Ogranicz KVM do organizacji, środowiska, serwera proxy interfejsu API lub wersji proxy interfejsu API za pomocą atrybutu zakresu zasad KVM. |
Usuwanie wpisów KVM w środowisku wykonawczym interfejsu API | Usuń wpisy KVM w środowisku wykonawczym interfejsu API, korzystając z operacji DELETE zasady KVM. |
Sample
PUT KVM z literałem
Gdy ta zasada jest uruchamiana, tworzy zaszyfrowaną maszynę wirtualną o nazwie FooKVM
, a następnie klucz o nazwie FooKey_1
z 2 wartościami ustawionymi z ciągami literałowymi foo
i bar
(nie ustawiono z wartościami wyodrębnionymi ze zmiennych). Przy wykonywaniu GET
klucza w następnym przykładzie określasz numer indeksu, aby pobrać żądaną wartość.
<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>
Zwróć uwagę, że zakres to „environment”. Oznacza to, że możesz zobaczyć maszynę wirtualną w interfejsie zarządzania w sekcji Interfejsy API > Konfiguracja środowiska > Mapy par klucz-wartość. Główne maszyny wirtualne wyświetlane na tej stronie są ograniczone do wybranego środowiska.
POBIERZ KVM z literału
Ta zasada analizuje mapę FooKVM
z poprzedniego przykładu, pobiera drugą wartość (index="2") z klucza FooKey_1
i zapisuje ją w zmiennej o nazwie 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 ze zmienną
Prostym przykładem przydatnej mapy par klucz-wartość jest usługa skracania adresów URL. Mapę par klucz-wartość można skonfigurować tak, aby zapisywały skrócone adresy URL wraz z odpowiadającymi im pełnymi adresami URL.
Ten przykład zasad tworzy mapę par klucz-wartość. Zasada przesyła klucz z 2 powiązanymi wartościami do mapy klucz-wartość o nazwie „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>
W tym przykładzie klucz urlencoding.requesturl.hashed
to przykład zmiennej niestandardowej. Zaszyfrowany adres URL żądania jest generowany przez kod (np. JavaScript lub Java), a następnie przechowywany w tej zmiennej, do której ma dostęp zasada KeyValueMapOperations.
W przypadku każdego klucza (requesturl.hashed
) przechowywane są 2 wartości:
- Zawartość zmiennej niestandardowej o nazwie
urlencoding.longurl.encoded
- Zawartość wstępnie zdefiniowanej zmiennej
request.queryparam.url
Jeśli na przykład zasada jest uruchamiana w czasie działania, zmienne mogą mieć takie wartości:
urlencoding.requesturl.hashed: ed24e12820f2f900ae383b7cc4f2b31c402db1be
urlencoding.longurl.encoded: http://tinyurl.com/38lwmlr
request.queryparam.url: http://apigee.com
Poniższa mapa i wpis klucz-wartość zostaną wygenerowane w magazynie par klucz-wartość Edge i ograniczone do serwera proxy interfejsu API, do którego powiązana jest zasada:
{ "entry" :[ { "name" : "ed24e12820f2f900ae383b7cc4f2b31c402db1be", "value" : "http://tinyurl.com/38lwmlr,http://apigee.com" } ], "name" : "urlMapper" }
Wpis będzie trwał do momentu jego usunięcia. Wpisy do magazynu klucz-wartość są rozłożone między instancjami Edge, które działają w chmurze.
POBIERZ KVM ze zmiennej
Prostym przykładem przydatnej mapy par klucz-wartość jest usługa skracania adresów URL. Mapę par klucz-wartość można skonfigurować tak, aby zapisywały skrócone adresy URL wraz z odpowiadającymi im pełnymi adresami URL.
Aby pobrać wartość wpisu mapy klucz/wartość, taką jak ta dostępna na karcie KeyValueMapOperations PUT, skonfiguruj zasadę pobierającą mapę par klucz-wartość:
<KeyValueMapOperations name="getUrl" mapIdentifier="urlMapper"> <Scope>apiproxy</Scope> <Get assignTo="urlencoding.shorturl" index='1'> <Key> <Parameter ref="urlencoding.requesturl.hashed"/> </Key> </Get> </KeyValueMapOperations>
Jeśli po uruchomieniu tej zasady wartość zmiennej urlencoding.requesturl.hashed
wynosi ed24e12820f2f900ae383b7cc4f2b31c402db1be
, zmienna niestandardowa o nazwie urlencoding.shorturl
zostanie ustawiona z wartością http://tinyurl.com/38lwmlr
.
Po pobraniu danych inne zasady i kod mogą uzyskać do nich dostęp przez wyodrębnienie wartości z tych zmiennych.
Zaszyfrowana wartość GET z KVM
Jeśli mapa klucz-wartość jest zaszyfrowana, pobierz wartości za pomocą prefiksu „private.
” w wartości atrybutu assignTo
. W tym przykładzie zmienna private.encryptedVar
zawiera odszyfrowaną wartość klucza foo
mapy klucz-wartość. Informacje o tworzeniu zaszyfrowanych map par klucz-wartość znajdziesz w tematach tworzenia za pomocą interfejsu API zarządzania mapami klucz/wartości.
<KeyValueMapOperations name="getEncrypted" mapIdentifier="encrypted_map"> <Scope>apiproxy</Scope> <Get assignTo="private.encryptedVar" index='1'> <Key> <Parameter>foo</Parameter> </Key> </Get> </KeyValueMapOperations>
Po pobraniu danych inne zasady i kod mogą uzyskać do nich dostęp, wyodrębniając wartość z tej zmiennej.
Odwołanie do elementu
Dokumentacja elementów opisuje elementy i atrybuty zasady 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>
Atrybuty <KeyValueMapOperations>
Ten przykład pokazuje atrybuty w tagu <KeyValueMapOperations>
:
<KeyValueMapOperations async="false" continueOnError="false" enabled="true" name="Key-Value-Map-Operations-1" mapIdentifier="map_name">
W tabeli poniżej znajdziesz opis atrybutów charakterystycznych dla tagu <KeyValueMapOperations>
:
Atrybut | Opis | Domyślne | Obecność |
---|---|---|---|
mapIdentifier |
Określa identyfikator, który ma być używany podczas uzyskiwania dostępu do mapy utworzonej przez tę zasadę lub w interfejsie zarządzania. W Apigee Edge dla chmury publicznej nazwa KVM uwzględnia wielkość liter.
Na przykład Jeśli wykluczysz ten atrybut, używany będzie KVM o nazwie Na poziomie organizacji/środowiska/apiproxy możesz użyć atrybutu |
Nie dotyczy | Opcjonalnie |
Tabela poniżej zawiera opis atrybutów wspólnych dla wszystkich elementów nadrzędnych zasad:
Atrybut | Opis | Domyślne | Obecność |
---|---|---|---|
name |
Wewnętrzna nazwa zasady. Wartość atrybutu Opcjonalnie możesz użyć elementu |
Nie dotyczy | Wymagane |
continueOnError |
Ustaw wartość Ustaw jako |
false | Opcjonalnie |
enabled |
Ustaw jako Ustaw wartość |
prawda | Opcjonalnie |
async |
Ten atrybut został wycofany. |
false | Wycofano |
Element <DisplayName>
Użyj oprócz atrybutu name
, aby oznaczyć zasadę w edytorze serwera proxy interfejsu zarządzania inną nazwą w języku naturalnym.
<DisplayName>Policy Display Name</DisplayName>
Domyślne |
Nie dotyczy Jeśli pominiesz ten element, zostanie użyta wartość atrybutu |
---|---|
Obecność | Opcjonalnie |
Typ | Ciąg znaków |
Element <Delete>
Usuwa określoną parę klucz-wartość. Należy użyć co najmniej 1 z tych elementów: <Get>
, <Put>
lub <Delete>
.
Pamiętaj, aby podać nazwę KVM za pomocą atrybutu mapIdentifier
w elemencie nadrzędnym. Na przykład:
<Delete> <Key> <Parameter>key_name_literal</Parameter> </Key> </Delete>
Domyślne | Nie dotyczy |
---|---|
Obecność | Wymagane w przypadku braku wartości <Get> lub <Put> . |
Typ | Nie dotyczy |
Element <Entry>
Wartości wyjściowe dla map klucz-wartość, które są wypełniane w mapie par klucz-wartość po jej zainicjowaniu.
W przypadku Edge dla chmury publicznej rozmiar klucza jest ograniczony do 2 KB. Na przykład:
<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>
Domyślne | Nie dotyczy |
---|---|
Obecność | Opcjonalnie |
Typ | Nie dotyczy |
Element <ExclusiveCache>
Rola wycofana. Zamiast tego użyj elementu <Scope>
.
Element <ExpiryTimeInSecs>
Określa czas (w sekundach), po którym Edge odświeża wartość z pamięci podręcznej określonego KVM.
Wartość 0 lub -1 albo jego wykluczenie oznacza, że używana jest wartość domyślna 300 sekund. Na przykład:
<ExpiryTimeInSecs>600</ExpiryTimeInSecs>
Domyślne | 300 (5 minut) |
---|---|
Obecność | Opcjonalnie |
Typ | Liczba całkowita |
KVM to mechanizm długoterminowego przechowywania danych, który przechowuje klucze i wartości w bazie danych NoSQL. Z tego powodu odczyt z maszyny wirtualnej w czasie działania może potencjalnie spowolnić serwer proxy. Aby zwiększyć wydajność, Edge ma wbudowany mechanizm buforowania kluczy/wartości KVM w pamięci podczas działania. Ta zasada operacji KVM zawsze odczytuje dane z pamięci podręcznej w przypadku operacji GET.
Element <ExpiryTimeInSecs>
pozwala określić, jak długo klucze/wartości używane w zasadzie mają być przechowywane w pamięci podręcznej, zanim zostaną ponownie odświeżone z KVM. Istnieją jednak pewne różnice między tym, jak operacje GET i PUT wpływają na wygaśnięcie pamięci podręcznej.
GET – przy pierwszym wykonaniu operacji GET żądane klucze/wartości z KVM (której nazwa jest określona w atrybucie głównym zasad mapIdentifier
) są ładowane do pamięci podręcznej, gdzie pozostają przy kolejnych operacjach GET, dopóki nie wystąpi jedna z tych sytuacji:
- Liczba sekund podana w polu
<ExpiryTimeInSecs>
wygasa.
lub - Operacja PUT w zasadzie KVM zastępuje istniejące wartości (objaśnione poniżej).
PUT – operacja PUT zapisuje klucze/wartości w określonym KVM. Jeśli PUT zapisuje klucz w kluczu, który już istnieje w pamięci podręcznej, ta pamięć podręczna jest natychmiast odświeżana i teraz zachowuje nową wartość dla liczby sekund określonej w elemencie <ExpiryTimeInSecs>
zasady.
Przykład: zapisywanie KVM w pamięci podręcznej
- Operacja GET pobiera wartość „rating”, która dodaje wartość „10” do pamięci podręcznej.
<ExpiryTimeInSecs>
w zasadzie ma wartość 60. - Po 30 sekundach zasada GET jest uruchamiana ponownie i pobiera z pamięci podręcznej wartość „10”.
- 5 sekund później zasada PUT aktualizuje wartość „rating” na „8”, a
<ExpiryTimeInSecs>
w zasadzie PUT ma wartość 20. Pamięć podręczna jest natychmiast odświeżana przy użyciu nowej wartości, która obecnie jest ustawiona tak, aby pozostawała w pamięci podręcznej przez 20 sekund. (Gdyby PUT nie wystąpiło, pamięć podręczna wypełniona pierwotnie przez pierwsze GET dalej będzie istnieć przez kolejne 30 sekund. - 15 sekund później wykonuje się kolejna metoda GET, która pobiera wartość „8”.
Element <Get>
Pobiera wartość określonego klucza. Należy użyć co najmniej 1 z tych elementów: <Get>
, <Put>
lub <Delete>
.
Pamiętaj, aby podać nazwę KVM za pomocą atrybutu mapIdentifier
w elemencie nadrzędnym.
Aby pobierać wiele elementów z KVM, możesz uwzględnić w zasadzie wiele bloków Get
.
Domyślne | Nie dotyczy |
---|---|
Obecność | Wymagane, jeśli brakuje <Put> lub <Delete> . |
Typ | Nie dotyczy |
Pobieranie pojedynczego produktu z maszyny wirtualnej
<Get assignTo="myvar" index="1"> <Key> <Parameter>key_name_literal</Parameter> </Key> </Get>
Pobieranie wielu elementów z maszyny wirtualnej
W przykładzie poniżej przyjmijmy, że kluczowa jest maszyna wirtualna z podanymi niżej kluczami i wartościami. Oprócz magazynu najpopularniejszych filmów wszech czasów, KVM przechowuje również imię i nazwisko reżysera wszystkich popularnych filmów.
Klucz | Wartość |
---|---|
top_movies | Księżniczka,Ojciec chrzestny,Citizen Kane |
Obywatel Kane | Orsona Wellesa |
Księżniczka | Rob Reiner |
Ojciec chrzestny | Francis Ford Coppola |
Oto konfiguracja zasad KVM, dzięki której możemy pobrać obecnie najpopularniejszy film i imię i nazwisko jego reżysera:
<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>
Po wywołaniu serwera proxy interfejsu API Edge tworzy te zmienne, których możesz używać w procesie obsługi serwera proxy interfejsu API:
top.movie.pick=Princess Bride
movie.director=Rob Reiner
Atrybuty
Tabela poniżej zawiera opis atrybutów elementu <Get>
:
Atrybut | Opis | Domyślne | Obecność |
---|---|---|---|
assignTo |
Zmienna, do której należy przypisać pobraną wartość. Jeśli mapa par klucz jest zaszyfrowana, rozpocznij nazwę assignTo od „ <Get assignTo="private.myvar"> Zasada zgłasza błąd, jeśli próbujesz pobrać zaszyfrowaną mapę par klucza bez użycia prefiksu. Prefiks, który jest wymagany do podstawowych działań związanych z bezpieczeństwem podczas debugowania, ukrywa zaszyfrowane wartości w sesjach śledzenia serwera proxy interfejsu API i debugowania. Informacje o tworzeniu zaszyfrowanych map par klucz-wartość znajdziesz w tematach tworzenia w ramach interfejsu Key/Value Maps Management API oraz tworzenia i edytowania map klucz-wartość środowiska. |
Nie dotyczy | Wymagane |
index |
Numer indeksu (w indeksie równym 1) elementu, który ma zostać pobrany z klucza wielowartościowego.
Na przykład wpisanie Przykład można znaleźć na karcie „Pobieranie zaszyfrowanej wartości z KVM” w sekcji Przykłady. |
Nie dotyczy | Opcjonalnie |
Element <InitialEntries>
Wartości wyjściowe w przypadku map par klucz-wartość, które są wypełniane w mapie par klucz-wartość po jej zainicjowaniu.
Pamiętaj, aby podać nazwę KVM za pomocą atrybutu mapIdentifier
w elemencie nadrzędnym, na przykład:
<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>
Gdy używasz tego elementu i zapiszesz zasadę w interfejsie zarządzania na wdrożonej wersji serwera proxy lub wdrożysz pakiet proxy interfejsu API zawierający zasadę z tym elementem, klucze zostaną automatycznie utworzone w KVM (jako niezaszyfrowane). Jeśli wartości w zasadzie różnią się od wartości w KVM, po wdrożeniu serwera proxy wartości w KVM są zastępowane. Wszystkie nowe pary klucz-wartość zostaną dodane do istniejącej klucza maszyny wirtualnej razem z dotychczasowymi parami.
Klucze i wartości wypełniane przez ten element muszą być literałami. Na przykład element <Parameter
ref="request.queryparam.key">
nie jest obsługiwany w tym elemencie.
Rozmiar klucza jest ograniczony do 2 KB zarówno w przypadku Edge dla chmury publicznej, jak i Edge dla Private mogła. Wartość KVM jest ograniczona do 2 KB.
Aby utworzyć zaszyfrowaną maszynę wirtualną, użyj interfejsu Key/Value Maps Management API.
Domyślne | Nie dotyczy |
---|---|
Obecność | Opcjonalnie |
Typ | Nie dotyczy |
Element <Key>
Określa klucz we wpisie mapy klucz-wartość. Klucz może być złożony, co oznacza, że w celu utworzenia klucza można dołączyć więcej niż 1 parametr. Na przykład userID
i role
można połączyć, aby utworzyć key
. Na przykład:
<Key> <Parameter>key_name_literal</Parameter> </Key>
Szczegółowe informacje o ustawianiu nazwy klucza znajdziesz w elemencie <Parameter>.
W przypadku Edge dla chmury publicznej rozmiar klucza jest ograniczony do 2 KB. Więcej informacji znajdziesz w artykule o różnicach między interfejsem Edge for Public Cloud API a interfejsem Private Cloud API.
Domyślne | Nie dotyczy |
---|---|
Obecność | Opcjonalnie |
Typ | Nie dotyczy |
Element <Parametr>
Określa klucz w parze klucz-wartość. Ten element określa nazwę podczas tworzenia, umieszczania, pobierania lub usuwania pary klucz-wartość.
Nazwę możesz określić za pomocą:
-
Literał
<Key> <Parameter>literal</Parameter> </Key>
-
Zmienna do pobrania w czasie działania przy użyciu atrybutu
ref
<Key> <Parameter ref="variable_name"/> </Key>
-
Kombinacja literałów i odwołań do zmiennych
<Key> <Parameter>targeturl</Parameter> <Parameter ref="apiproxy.name"/> <Parameter>weight</Parameter> </Key>
Jeśli element Key zawiera wiele elementów Parameter, ciąg znaków skutecznego klucza to połączenie wartości każdego parametru połączone podwójnym podkreśleniem. Na przykład w powyższym przykładzie, jeśli zmienna apiproxy.name
ma wartość „abc1”, skutecznym kluczem jest targeturl__abc1__weight
.
Niezależnie od tego, czy pobierasz, aktualizujesz czy usuwasz wpis klucz-wartość, nazwa klucza musi być taka sama jak nazwa klucza na mapie par klucz-wartość. Wskazówki znajdziesz w sekcji Określanie i pobieranie nazw kluczy.
Domyślne | Nie dotyczy |
---|---|
Obecność | Wymagane |
Typ | Ciąg znaków |
Atrybuty
Tabela poniżej zawiera opis atrybutów elementu <Parameter>
:
Atrybut | Opis | Domyślne | Obecność |
---|---|---|---|
referencja | Określa nazwę zmiennej, której wartość zawiera dokładną nazwę klucza, który chcesz utworzyć, pobrać lub usunąć. | Nie dotyczy | Wymagany, jeśli między tagiem otwierającym a zamykającym nie podano wartości literału. Niedozwolone w przypadku podania wartości literału. |
Element <Put>
Zapisuje parę klucz/wartość w mapie par klucz-wartość niezależnie od tego, czy mapa jest zaszyfrowana, czy niezaszyfrowana. Jeśli mapa par klucz-wartość określona w atrybucie mapIdentifier
elementu nadrzędnego nie istnieje, mapa jest tworzona automatycznie (w postaci niezaszyfrowanej). Jeśli mapowanie par klucz-wartość już istnieje, zostaną do niej dodane.
Aby utworzyć zaszyfrowaną mapę par klucz-wartość, użyj interfejsu API zarządzania kluczami i wartościami map. Możesz też zapoznać się z informacjami w sekcji Tworzenie i edytowanie map wartości kluczy środowiska, co pozwoli Ci utworzyć w interfejsie zaszyfrowane KVM w zakresie środowiska.
<Put override="false"> <Key> <Parameter ref="mykeyvar"/> </Key> <Value ref="myvalvar1"/> </Put>
Domyślne | Nie dotyczy |
---|---|
Obecność | Wymagane, jeśli brakuje <Get> lub <Delete> . |
Typ | Nie dotyczy |
Atrybuty
Tabela poniżej zawiera opis atrybutów elementu <Put>
:
Atrybut | Opis | Domyślne | Obecność |
---|---|---|---|
zastąpić |
Jeśli ma wartość |
false |
Opcjonalnie |
Element <Scope>
Określa granicę ułatwień dostępu na mapach klucz-wartość. Domyślnym zakresem jest environment
, co oznacza, że wpisy map są domyślnie wspólne przez wszystkie serwery proxy interfejsu API działające w środowisku (na przykład testowe lub produkcyjne). Jeśli ustawisz zakres na apiproxy
, wpisy w mapie par klucz-wartość będą dostępne tylko przez serwer proxy interfejsu API, który zapisuje wartości na mapie.
Pamiętaj, że podczas uzyskiwania dostępu do wpisu o mapie lub mapie musisz podać tę samą wartość zakresu, która została użyta podczas tworzenia mapy. Jeśli na przykład mapa została utworzona z zakresem apiproxy
, przy pobieraniu jej wartości, wprowadzaniu zmian lub usuwaniu wpisów musisz używać zakresu apiproxy
.
<Scope>environment</Scope>
Domyślne | environment |
---|---|
Obecność | Opcjonalnie |
Typ | Ciąg znaków |
Prawidłowe wartości: |
|
Element <Value>
Określa wartość klucza. Możesz podać wartość jako ciąg literału lub za pomocą atrybutu ref
jako zmienną do pobierania w czasie działania:
<!-- Specify a literal value --> <Value>literal<Value>
lub
<!-- Specify the name of variable value to be populated at run time. --> <Value ref="variable_name"/>
Możesz też dodać wiele elementów <Value>
, aby określić wieloczęściową wartość. Wartości są łączone w czasie działania.
W tym przykładzie do KVM zostały dodane 2 klucze:
- Klucz
k1
o wartościachv1,v2
- Klucz
k2
o wartościachv3,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>
W poniższym przykładzie tworzony jest 1 klucz z 2 wartościami. Załóżmy, że nazwa organizacji to foo_org
, nazwa serwera proxy interfejsu API to bar
, a środowisko to test
:
- Klucz
foo_org
o wartościachbar,test
<Put> <Key> <Parameter ref="organization.name"/> </Key> <Value ref="apiproxy.name"/> <Value ref="environment.name"/> </Put>
Domyślne | Nie dotyczy |
---|---|
Obecność | Wymagane |
Typ | Ciąg znaków |
Atrybuty
Tabela poniżej zawiera opis atrybutów elementu <Value>
:
Atrybut | Opis | Domyślne | Obecność |
---|---|---|---|
referencja | Określa nazwę zmiennej, której wartość zawiera pary klucz-wartość, które chcesz ustawić. | Nie dotyczy | Wymagany, jeśli między tagiem otwierającym a zamykającym nie podano wartości literału. Niedozwolone w przypadku podania wartości literału. |
Informacje o błędach
Błędy zwracane z zasad Edge mają spójny format opisany w Informacjach na temat kodów błędów.
W tej sekcji opisujemy kody błędów i komunikaty o błędach, które są zwracane, oraz zmienne błędów ustawiane przez Edge, gdy ta zasada wywołuje błąd. Te informacje są ważne, jeśli opracowujesz reguły dotyczące błędów do obsługi takich błędów. Więcej informacji znajdziesz w sekcjach Co musisz wiedzieć o błędach zasad i Postępowanie w przypadku błędów.
Błędy w czasie wykonywania
Te błędy mogą wystąpić podczas wykonywania zasady.
Kod błędu | Stan HTTP | Przyczyna | Napraw |
---|---|---|---|
steps.keyvaluemapoperations.SetVariableFailed |
500 |
Ten błąd występuje, gdy próbujesz pobrać wartość z zaszyfrowanej mapy par kluczy i ustawić wartość na zmienną, której nazwa nie ma prefiksu |
build |
steps.keyvaluemapoperations.UnsupportedOperationException |
500 |
Ten błąd występuje, jeśli atrybut |
build |
Błędy wdrażania
Te błędy mogą wystąpić podczas wdrażania serwera proxy zawierającego te zasady.
Nazwa błędu | Przyczyna | Napraw |
---|---|---|
InvalidIndex |
Jeśli atrybut index określony w elemencie <Get> w zasadzie operacji mapowania par klucz-wartość ma wartość zero lub jest liczbą ujemną, wdrożenie serwera proxy interfejsu API się nie uda. Indeks zaczyna się od 1 , więc indeks o wartości 0 lub ujemna liczba całkowita jest uznawany za nieprawidłowy.
|
build |
KeyIsMissing |
Ten błąd występuje, jeśli całkowicie brakuje elementu <Key> lub brakuje elementu <Parameter> w elemencie <Key> poniżej <Entry> elementu <InitialEntries> zasad operacji mapy klucz-wartość.
|
build |
ValueIsMissing |
Ten błąd występuje, jeśli brakuje elementu <Value> pod elementem <Entry> elementu <InitialEntries> zasady operacji na mapie par klucz-wartość. |
build |
Schematy
Zastosowanie
Omówienie map klucz-wartość znajdziesz w artykule Praca z mapami klucz-wartość (w języku angielskim).
Magazyn mapy par klucz-wartość zapewnia prosty mechanizm trwałości danych sformatowanych jako pary klucz/wartość. Możesz uzyskać do nich dostęp w czasie działania za pomocą zasad lub kodu. Mapa zawiera dowolne dane w formacie key=value
.
Na przykład localhost=127.0.0.1
, zip_code=94110
lub first_name=felix
. W pierwszym przykładzie localhost
to klucz, a 127.0.0.1
to wartość. Każda para klucz-wartość jest przechowywana jako wpis w mapie par klucz-wartość. Mapa par klucz-wartość może zawierać wiele wpisów.
Oto przykład użycia map klucz-wartość. Załóżmy, że chcesz przechowywać listę adresów IP powiązanych z różnymi środowiskami backendu. Możesz utworzyć mapę klucz-wartość o nazwie ipAddresses
, która zawiera listę par klucz/wartość jako wpisy. Na przykład ten plik JSON może reprezentować taką mapę:
{ "entry" : [ { "name" : "Development", "value" : "65.87.18.18" }, { "name" : "Staging", "value" : "65.87.18.22" } ], "name" : "ipAddresses" }
Możesz użyć tej struktury do utworzenia magazynu adresów IP, które mogą być używane przez zasady w czasie działania w celu wymuszania umieszczania adresów IP na liście dozwolonych lub odrzuconych, aby dynamicznie wybierać docelowy adres backendu itp. Zwykle zasada KeyValueMapOperations służy do przechowywania lub pobierania długotrwałych informacji, których należy używać ponownie w wielu transakcjach żądań i odpowiedzi.
Mapami klucz-wartość można manipulować za pomocą zasady KeyValueMapOperations lub bezpośrednio przez interfejs Apigee Edge Management API. Więcej informacji o interfejsie API map klucz-wartość organizacji znajdziesz w dokumentacji interfejsu Management API. Za pomocą interfejsu API możesz na przykład przesyłać duże zbiory danych do magazynu par klucz-wartość lub tworzyć skrypty do zarządzania wpisami z mapami par klucz-wartość. Zanim uzyskasz dostęp do mapy za pomocą zasady KeyValueMapOperations, musisz utworzyć ją za pomocą interfejsu API.
Określanie i pobieranie nazw kluczy
Za pomocą elementów <Parameter>
i <Value>
możesz podać wartość literałową (gdzie wartość znajduje się między tagiem otwierającym i zamykającym) lub użyć atrybutu ref
, aby określić nazwę zmiennej, której wartość należy używać w czasie działania.
Warto wspomnieć o elemencie Parametr, ponieważ określa on nazwę utworzonego klucza oraz nazwę klucza, który chcesz pobrać lub usunąć. Poniżej przedstawiliśmy 2 przykłady. Pierwszy określa dosłownie nazwę klucza, a drugi – nazwę klucza za pomocą zmiennej. Załóżmy, że do tworzenia kluczy w KVM:
<Parameter>key_name_literal</Parameter> <Parameter ref="key.name.variable"/>
W pierwszej instancji wartość literałowa „key_name_literal” jest przechowywana w KVM jako nazwa klucza. W drugim instancji każda wartość znajdująca się w key.name.variable
staje się nazwą klucza w KVM. Jeśli np. key.name.variable
zawiera wartość foo
, klucz będzie miał nazwę „foo”.
Jeśli chcesz pobrać klucz i wartość klucza za pomocą operacji GET (lub usunąć za pomocą operacji DELETE), ustawienie <Parametr> musi być zgodne z nazwą klucza w KVM. Jeśli na przykład nazwa klucza w KVM to „foo”, możesz podać literał za pomocą <Parameter>foo</Parameter>
lub określić zmienną, która zawiera dokładną wartość „foo”, w ten sposób: <Parameter ref="variable.containing.foo"/>
.