Wyświetlasz dokumentację Apigee Edge.
Przejdź do
dokumentacji Apigee X. info
Z tego artykułu dowiesz się, jak ustawić właściwości transportu, które można skonfigurować w TargetEndpoint i ProxyEndpoint , aby kontrolować zachowanie związane z przesyłaniem wiadomości i połączeniami. Pełne informacje o konfiguracji TargetEndpoint i ProxyEndpoint znajdziesz w artykule Konfiguracja serwera proxy interfejsu API.
Właściwości transportu TargetEndpoint
Element HTTPTargetConnection w konfiguracjach TargetEndpoint określa zestaw właściwości transportu HTTP. Za pomocą tych właściwości możesz ustawić konfiguracje na poziomie transportu.
Właściwości są ustawiane w elementach HTTPTargetConnection TargetEndpoint w sposób pokazany poniżej:
<TargetEndpoint name="default">
<HTTPTargetConnection>
<URL>http://mocktarget.apigee.net</URL>
<Properties>
<Property name="supports.http10">true</Property>
<Property name="request.retain.headers">User-Agent,Referer,Accept-Language</Property>
<Property name="retain.queryparams">apikey</Property>
</Properties>
<CommonName>COMMON_NAME_HERE</CommonName>
</HTTPTargetConnection>
</TargetEndpoint>Specyfikacja właściwości transportu TargetEndpoint
| Nazwa właściwości | Wartość domyślna | Opis |
|---|---|---|
keepalive.timeout.millis |
60000 |
Czas oczekiwania na nieaktywne połączenie docelowe w puli połączeń. Jeśli połączenie w puli jest nieaktywne dłużej niż określony limit, zostanie zamknięte. |
connect.timeout.millis |
|
Czas oczekiwania na połączenie docelowe. Jeśli wystąpi przekroczenie limitu czasu połączenia, Edge zwróci kod stanu HTTP |
io.timeout.millis |
55000 |
Jeśli przez określony czas (w milisekundach) nie ma danych do odczytania lub jeśli gniazdo jest niegotowe do zapisu danych przez określony czas (w milisekundach), transakcja jest traktowana jako przekroczenie limitu czasu.
Ta wartość powinna być zawsze mniejsza niż wartość właściwości proxy_read_timeout hosta wirtualnego . Ta wartość powinna być mniejsza niż czas oczekiwania używany przez router do komunikacji z procesorem komunikatów. Więcej informacji znajdziesz w artykule Konfigurowanie czasu oczekiwania routera. Więcej informacji znajdziesz w artykule Ustawianie io.timeout.millis i api.timeout w Edge. |
supports.http10 |
true |
Jeśli ta wartość to true i klient wysyła żądanie 1.0, do celu również wysyłane jest żądanie 1.0
żądanie. W przeciwnym razie do celu wysyłane jest żądanie 1.1. |
supports.http11 |
true |
Jeśli ta wartość to true i klient wysyła żądanie 1.1, do celu również wysyłane jest żądanie 1.1
. W przeciwnym razie do celu wysyłane jest żądanie 1.0. |
use.proxy |
true |
Jeśli ta wartość jest ustawiona na true i konfiguracje serwera proxy są określone w
http.properties (tylko w przypadku wdrożeń lokalnych), połączenia docelowe
są ustawione tak, aby korzystać z określonego serwera proxy. |
use.proxy.tunneling |
true |
Jeśli ta wartość jest ustawiona na true, a konfiguracje serwera proxy są określone w
http.properties (tylko w przypadku wdrożeń lokalnych), połączenia docelowe są ustawione tak, aby korzystać z określonego tunelu. Jeśli cel używa protokołu TLS/SSL, ta
właściwość jest ignorowana, a wiadomość jest zawsze wysyłana przez tunel. |
enable.method.override |
false |
W przypadku określonej metody HTTP ustawia nagłówek X-HTTP-Method-Override w żądaniu wychodzącym do usługi docelowej. Na przykład: <Property
name="GET.override.method">POST</Property> |
*.override.method |
Nie dotyczy | W przypadku określonej metody HTTP ustawia nagłówek X-HTTP-Method-Override w żądaniu wychodzącym. Na przykład: <Property
name="GET.override.method">POST</Property> |
request.streaming.enabled |
false |
Domyślnie ( |
response.streaming.enabled |
false |
Domyślnie ( |
success.codes |
Nie dotyczy |
Domyślnie Apigee Edge traktuje kod HTTP Ustawienie tej właściwości powoduje zastąpienie wartości domyślnych. Jeśli więc chcesz dodać
kod HTTP <Property name="success.codes">1XX,2XX,3XX,400</Property> Jeśli chcesz, aby tylko kod HTTP <Property name="success.codes">400</Property> Ustawiając kod HTTP |
compression.algorithm |
Nie dotyczy |
Domyślnie Apigee Edge przekazuje żądania do celu, używając tego samego typu kompresji
co żądanie klienta. Jeśli żądanie zostanie odebrane od klienta, np. przy użyciu kompresji gzip
Apigee Edge przekazuje żądanie do celu przy użyciu kompresji gzip. Jeśli
odpowiedź otrzymana z celu używa kompresji deflate, Apigee Edge przekazuje odpowiedź do
klienta przy użyciu kompresji deflate. Obsługiwane wartości:
Zobacz też: Czy Apigee obsługuje kompresję/dekompresję za pomocą kompresji GZIP/deflate? |
request.retain.headers. |
true |
Domyślnie Apigee Edge zawsze zachowuje wszystkie nagłówki HTTP w wiadomościach wychodzących. Gdy ta wartość jest ustawiona
na true, wszystkie nagłówki HTTP obecne w żądaniu przychodzącym są ustawiane w żądaniu
wychodzącym. |
request.retain.headers |
Nie dotyczy | Określa konkretne nagłówki HTTP z żądania, które powinny być ustawione w żądaniu wychodzącym do usługi docelowej. Aby na przykład przekazać User-Agent
nagłówek, ustaw wartość request.retain.headers na User-Agent.
Wiele nagłówków HTTP jest określonych jako lista rozdzielona przecinkami, np.
User-Agent,Referer,Accept-Language. Ta właściwość zastępuje
request.retain.headers.enabled. Jeśli request.retain.headers.enabled
jest ustawiona na false, wszystkie nagłówki określone we właściwości
request.retain.headers są nadal ustawiane w wiadomości wychodzącej. |
response.retain.headers. |
true |
Domyślnie Apigee Edge zawsze zachowuje wszystkie nagłówki HTTP w wiadomościach wychodzących. Gdy ta wartość jest ustawiona
na true, wszystkie nagłówki HTTP obecne w odpowiedzi przychodzącej z usługi docelowej
są ustawiane w odpowiedzi wychodzącej, zanim zostanie ona przekazana do ProxyEndpoint. |
response.retain.headers |
Nie dotyczy | Określa konkretne nagłówki HTTP z odpowiedzi, które powinny być ustawione w odpowiedzi wychodzącej
zanim zostanie ona przekazana do ProxyEndpoint. Aby na przykład przekazać nagłówek
Expires, ustaw wartość response.retain.headers na
Expires. Wiele nagłówków HTTP jest określonych jako lista rozdzielona przecinkami, np. Expires,Set-Cookie. Ta właściwość zastępuje
response.retain.headers.enabled. Jeśli
response.retain.headers.enabled jest ustawiona na false, wszystkie nagłówki
określone we właściwości response.retain.headers są nadal ustawiane w
wiadomości wychodzącej. |
retain.queryparams. |
true |
Domyślnie Apigee Edge zawsze zachowuje wszystkie parametry zapytania w żądaniach wychodzących. Gdy
ustawiono na true, wszystkie parametry zapytania obecne w żądaniu przychodzącym są ustawiane w
żądaniu wychodzącym do usługi docelowej. |
retain.queryparams |
Nie dotyczy | Określa konkretne parametry zapytania, które mają być ustawione w żądaniu wychodzącym. Aby na przykład uwzględnić parametr zapytania apikey z wiadomości żądania, ustaw
retain.queryparams na apikey. Wiele parametrów zapytania jest
określonych jako lista rozdzielona przecinkami, np. apikey,environment. Ta
właściwość zastępuje retain.queryparams.enabled. |
Właściwości transportu ProxyEndpoint
Elementy HTTPTargetConnection ProxyEndpoint określają zestaw właściwości transportu HTTP. Za pomocą tych właściwości możesz ustawić konfiguracje na poziomie transportu.
Właściwości są ustawiane w elementach HTTPProxyConnection ProxyEndpoint w ten sposób:
<ProxyEndpoint name="default">
<HTTPProxyConnection>
<BasePath>/v1/weather</BasePath>
<Properties>
<Property name="request.streaming.enabled">true</Property>
</Properties>
<VirtualHost>default</VirtualHost>
<VirtualHost>secure</VirtualHost>
</HTTPProxyConnection>
</ProxyEndpoint>Więcej informacji o hostach wirtualnych znajdziesz w artykule Hosty wirtualne.
Specyfikacja właściwości transportu ProxyEndpoint
| Nazwa właściwości | Wartość domyślna | Opis |
|---|---|---|
X-Forwarded-For |
false |
Gdy ta wartość jest ustawiona na true, adres IP hosta wirtualnego jest dodawany do żądania wychodzącego jako
wartość nagłówka HTTP X-Forwarded-For. |
request.streaming. |
false |
Domyślnie (false) ładunki żądań HTTP są odczytywane do bufora, a zasady, które mogą
działać na ładunku, działają zgodnie z oczekiwaniami. Jeśli ładunki są większe niż
rozmiar bufora (10 MB), możesz ustawić ten
atrybut na true. Gdy wartość to true, ładunki żądań HTTP nie są odczytywane do bufora. Są one
przesyłane strumieniowo do przepływu żądania TargetEndpoint. W takim przypadku wszystkie zasady, które działają
na ładunku w przepływie żądania ProxyEndpoint, są pomijane. Zobacz też Przesyłanie strumieniowe żądań i odpowiedzi. |
response.streaming. |
false |
Domyślnie (false) ładunki odpowiedzi HTTP są odczytywane do bufora, a zasady, które
mogą działać na ładunku, działają zgodnie z oczekiwaniami. Jeśli ładunki są większe niż
rozmiar bufora (10 MB), możesz ustawić ten
atrybut na true. Gdy wartość to true, ładunki odpowiedzi HTTP nie są odczytywane do bufora. Są one
przesyłane strumieniowo do klienta. W takim przypadku wszystkie zasady, które działają na ładunku w przepływie odpowiedzi ProxyEndpoint, są pomijane. Zobacz też Przesyłanie strumieniowe żądań i odpowiedzi. |
compression.algorithm |
Nie dotyczy |
Domyślnie Apigee Edge uwzględnia typ kompresji ustawiony dla każdej otrzymanej wiadomości. Jeśli na przykład klient przesyła żądanie, które używa kompresji gzip, Apigee Edge przekazuje żądanie do celu przy użyciu kompresji gzip. Możesz skonfigurować algorytmy kompresji , które mają być stosowane w sposób jawny, ustawiając tę właściwość w TargetEndpoint lub ProxyEndpoint. Obsługiwane wartości:
Zobacz też: Czy Apigee obsługuje kompresję/dekompresję za pomocą kompresji GZIP/deflate? |
api.timeout |
Nie dotyczy |
Konfigurowanie czasu oczekiwania dla poszczególnych serwerów proxy interfejsu API Możesz skonfigurować serwery proxy interfejsu API, nawet te z
przesyłaniem strumieniowym włączonym,
tak aby po określonym czasie przekraczały limit czasu ze stanem
Nie możesz ustawić tej właściwości za pomocą zmiennej. Klienci, którzy nie mogą modyfikować limitów czasu Edge, mogą też skonfigurować limit czasu serwera proxy interfejsu API , o ile jest on krótszy niż standardowy limit czasu procesora wiadomości Edge wynoszący 57 sekund. Więcej informacji znajdziesz w artykule Ustawianie io.timeout.millis i api.timeout w Edge. |
Ustawianie io.timeout.millis i api.timeout w Edge
W Edge działanie io.timeout.millis i api.timeout
jest powiązane.
W przypadku każdego żądania do serwera proxy interfejsu API:
- Router wysyła wartość limitu czasu do procesora komunikatów. Wartość limitu czasu routera to wartość
proxy_read_timeoutustawiona przez hosta wirtualnego obsługującego żądanie, lub domyślna wartość limitu czasu wynosząca 57 sekund. - Procesor komunikatów ustawia następnie
api.timeout:- Jeśli
api.timeoutnie jest ustawiony na poziomie serwera proxy, ustaw go na limit czasu routera. - Jeśli
api.timeoutjest ustawiony na poziomie serwera proxy, ustaw go w procesorze komunikatów na mniejszą z wartości limitu czasu routera lubapi.timeout.
- Jeśli
Wartość
api.timeoutokreśla maksymalny czas, jaki proxy interfejsu API ma na wykonanie od żądania do interfejsu API do odpowiedzi.Po wykonaniu każdej zasady w proxy interfejsu API, lub przed wysłaniem żądania do punktu końcowego docelowego przez procesor komunikatów, procesor komunikatów oblicza wartość (
api.timeout– czas, który upłynął od początku żądania). Jeśli wartość jest mniejsza od zera, oznacza to, że upłynął maksymalny czas obsługi żądania, a procesor komunikatów zwraca kod504.Wartość
io.timeout.millisokreśla maksymalny czas, jaki punkt końcowy docelowy ma na odpowiedź.Przed połączeniem z punktem końcowym docelowym procesor komunikatów określa mniejszą z wartości (
api.timeout– czas, który upłynął od początku żądania) iio.timeout.millis. Następnie ustawiaio.timeout.millisna tę wartość.- Jeśli podczas zapisywania żądania HTTP nastąpi przekroczenie limitu czasu, zwracany jest kod
408, Request Timeout. - Jeśli podczas odczytywania odpowiedzi HTTP nastąpi przekroczenie limitu czasu, zwracany jest kod
504, Gateway Timeout.
- Jeśli podczas zapisywania żądania HTTP nastąpi przekroczenie limitu czasu, zwracany jest kod
Informacje o ScriptTarget w przypadku aplikacji Node.js
Element ScriptTarget służy do integrowania aplikacji Node.js z serwerem proxy. Więcej informacji o używaniu Node.js i ScriptTarget znajdziesz w tych artykułach:
Informacje o punktach końcowych HostedTarget
Pusty tag <HostedTarget/> informuje Edge, że ma używać jako celu aplikacji Node.js
wdrożonej w środowisku Hosted Targets. Więcej informacji znajdziesz w artykule
Omówienie Hosted Targets.