Referensi properti endpoint

Halaman ini berlaku untuk Apigee dan Apigee hybrid.

Lihat Dokumentasi Apigee Edge.

Topik ini menjelaskan properti transpor yang dapat ditetapkan di TargetEndpoint dan ProxyEndpoint untuk mengontrol perilaku pesan dan koneksi. Untuk liputan lengkap dari TargetEndpoint dan ProxyEndpoint opsi konfigurasi, lihat referensi konfigurasi proxy API.

Properti Transpor TargetEndpoint

Elemen HTTPTargetConnection dalam konfigurasi TargetEndpoint menentukan kumpulan HTTP properti transpor. Anda dapat menggunakan properti ini untuk menetapkan konfigurasi tingkat transportasi.

Properti ditetapkan pada elemen TargetEndpoint HTTPTargetConnection seperti yang ditunjukkan dalam contoh konfigurasi ini:

<TargetEndpoint name="default">
  <HTTPTargetConnection>
    <URL>http://mocktarget.apigee.net</URL>
    <Properties>
      <Property name="request.retain.headers">User-Agent,Referer,Accept-Language</Property>
      <Property name="retain.queryparams">apikey</Property>
    </Properties>
  </HTTPTargetConnection>
</TargetEndpoint>

Properti Transport TargetEndpoint Spesifikasi

Nama Properti Nilai Default Deskripsi
allow.post.without.content.length salah Memungkinkan Anda mengirim permintaan POST tanpa isi di dalamnya.
allow.put.without.content.length salah Memungkinkan Anda mengirim permintaan PUT tanpa konten di isi.
allow.tls.session.resumption benar Jika klien true (default) menggunakan kembali sesi TLS saat membuat koneksi baru ke target. Setel ke false jika Anda tidak ingin sesi TLS digunakan ulang. Penggunaan ulang sesi secara umum berarti waktu koneksi menjadi lebih singkat, tetapi beberapa target mungkin tidak mendukung penggunaan ulang sesi atau memiliki kesulitan menggunakannya.
keepalive.timeout.millis 60000 Waktu tunggu tidak ada aktivitas koneksi untuk koneksi target di kumpulan koneksi. Jika jika koneksi dalam kumpulan tidak ada aktivitas di luar batas yang ditentukan, berarti koneksi tutup.
connect.timeout.millis

3000

Waktu tunggu koneksi target habis. Apigee menampilkan kode status 503 HTTP jika waktu tunggu koneksi habis. Dalam beberapa kasus, kode status HTTP 504 ditampilkan saat LoadBalancer digunakan dalam definisi TargetServer dan waktu tunggu habis apa yang terjadi.

ignore.allow.header.for.405

benar

Memungkinkan Anda meneruskan kode status 405 kembali ke klien. Dengan mengaktifkan flag Apigee akan menampilkan 405, bukan kode status 502.

io.timeout.millis 55000

Jika tidak ada data yang akan dibaca untuk jumlah milidetik yang ditentukan, atau jika soket tidak siap menulis data untuk jumlah milidetik tertentu, maka transaksinya dianggap sebagai waktu tunggu.

  • Jika waktu tunggu habis saat membaca permintaan HTTP dari masuk, 408 Request Timeout disetel ulang. 408 Request Timeout tidak akan ditampilkan jika waktu tunggu habis yang terjadi saat menulis permintaan ke target.
  • Jika waktu tunggu terjadi saat menulis permintaan HTTP atau membaca Respons HTTP, 504 Gateway Timeout akan dikembalikan.

Lihat Menyetel io.timeout.millis dan api.timeout.

supports.http11 benar Jika ini adalah true dan klien mengirimkan permintaan 1.1, target juga akan dikirim 1.1 , jika tidak, permintaan 1.0 akan dikirim ke target.
use.proxy benar

Properti ini hanya berlaku untuk Apigee Hybrid.

Jika file penggantian hybrid Apigee berisi konfigurasi HTTP_PROXY, seperti yang dijelaskan dalam Mengonfigurasi forward proxy untuk proxy API, lalu gunakan properti ini untuk mengelola/mengontrol proxy mana yang harus jangan gunakan konfigurasi {i>proxy<i}.

Jika ditetapkan ke false, Proxy API akan melewati konfigurasi proxy HTTP yang ditentukan di file penggantian hybrid Apigee untuk koneksi target yang ditetapkan di proxy.

use.proxy.tunneling benar

Properti ini hanya berlaku untuk Apigee Hybrid.

Jika ini disetel ke true, dan konfigurasi proxy akan ditentukan File penggantian Apigee Hybrid seperti yang dijelaskan dalam Mengonfigurasi forward proxy untuk proxy API, kemudian koneksi target diatur untuk menggunakan terowongan yang ditentukan. Jika target menggunakan TLS/SSL, properti ini akan diabaikan, dan pesan selalu dikirim menggunakan tunnel.

request.streaming.enabled salah

Secara default (false), payload permintaan HTTP dibaca ke dalam buffer, dan kebijakan yang dapat beroperasi pada pekerjaan {i>payload<i} seperti yang diharapkan. Dalam kasus di mana payload lebih besar dari ukuran buffer (10 MB di Apigee), Anda dapat menyetel ke true. Saat true, payload permintaan HTTP tidak dibaca ke dalam {i>buffer<i} (penyangga); mereka di-streaming apa adanya ke endpoint target. Dalam hal ini, setiap kebijakan yang beroperasi berdasarkan payload dalam alur permintaan TargetEndpoint diabaikan. Lihat juga Permintaan streaming dan respons tersebut.

response.streaming.enabled salah

Secara {i>default<i} (salah), {i>payload<i} respons HTTP dibaca ke dalam {i>buffer<i}, dan kebijakan yang dapat beroperasi pada pekerjaan {i>payload<i} seperti yang diharapkan. Dalam kasus di mana payload lebih besar dari ukuran buffer (10 MB di Apigee), Anda dapat menyetel ke true. Jika true (benar), payload respons HTTP tidak akan dibaca ke buffer; mereka di-streaming apa adanya ke alur respons ProxyEndpoint. Dalam hal ini, setiap kebijakan yang beroperasi pada payload di alur respons TargetEndpoint akan diabaikan. Lihat juga Permintaan streaming dan respons tersebut.

success.codes T/A

Secara default, Apigee memperlakukan kode HTTP 4XX atau 5XX sebagai error, dan ini memperlakukan kode HTTP 1XX, 2XX, 3XX sebagai berhasil. Properti ini memungkinkan definisi yang jelas tentang kode keberhasilan, untuk contoh, 2XX, 1XX, 505 akan memperlakukan 100, 200, dan Kode respons HTTP 505 sebagai kesuksesan.

Menyetel properti ini akan menimpa nilai default. Oleh karena itu, jika Anda ingin menambahkan Kode HTTP 400 ke daftar kode sukses default, tetapkan properti ini sebagai:

<Property name="success.codes">1xx,2xx,3xx,400</Property>

Jika Anda hanya ingin kode HTTP 400 yang diperlakukan sebagai kode berhasil, tetapkan properti sebagai:

<Property name="success.codes">400</Property>

Dengan menetapkan kode HTTP 400 sebagai satu-satunya kode yang berhasil, 1xx, 2xx, dan 3xx dianggap gagal.

compression.algorithm T/A Secara default, Apigee menerima kumpulan jenis kompresi (gzip, deflate, atau tidak ada) untuk pesan diterima. Jika permintaan diterima dari klien menggunakan, misalnya, gzip baru, kemudian Apigee meneruskan permintaan ke target menggunakan kompresi gzip. Jika respons yang diterima dari target menggunakan deflate, kemudian Apigee meneruskan respons ke klien menggunakan {i>deflate<i}. Nilai yang didukung adalah:
  • gzip: selalu kirim pesan menggunakan kompresi gzip
  • deflate: selalu mengirim pesan menggunakan kompresi deflate
  • none: selalu mengirim pesan tanpa kompresi apa pun

Lihat juga: Apakah Apigee mendukung kompresi/de-kompresi dengan kompresi GZIP/deflate?

request.retain.headers.
enabled
benar Secara default, Apigee selalu mempertahankan semua header HTTP pada pesan keluar. Setelah ditetapkan ke true, semua header HTTP yang ada di permintaan masuk akan ditetapkan di permintaan keluar.
request.retain.headers T/A Menentukan header HTTP spesifik dari permintaan yang harus ditetapkan saat pengalihan permintaan ke layanan target. Misalnya, untuk passthrough User-Agent , setel nilai request.retain.headers ke User-Agent. Beberapa header HTTP ditetapkan sebagai daftar yang dipisahkan koma, misalnya, User-Agent,Referer,Accept-Language. Properti ini mengganti request.retain.headers.enabled. Jika request.retain.headers.enabled disetel ke false, header apa pun yang ditentukan dalam Properti request.retain.headers masih ditetapkan pada pesan keluar.
response.retain.headers.
enabled
benar Secara default, Apigee selalu mempertahankan semua header HTTP pada pesan keluar. Setelah ditetapkan ke true, semua header HTTP yang ada pada respons masuk dari target ditetapkan pada respons keluar sebelum diteruskan ke ProxyEndpoint.
response.retain.headers T/A Menentukan header HTTP spesifik dari respons yang harus ditetapkan saat panggilan keluar sebelum diteruskan ke ProxyEndpoint. Misalnya, untuk passthrough Header Expires, tetapkan nilai response.retain.headers ke Expires. Beberapa {i>header <i}HTTP ditetapkan sebagai daftar yang dipisahkan koma, untuk contoh, Expires,Set-Cookie. Properti ini mengganti response.retain.headers.enabled. Jika response.retain.headers.enabled ditetapkan ke false, header apa pun yang ditentukan di properti response.retain.headers masih ditetapkan di pesan keluar.
retain.queryparams.
enabled
benar Secara default, Apigee selalu menyimpan semua parameter kueri pada permintaan keluar. Kapan ditetapkan ke true, semua parameter kueri yang ada pada permintaan masuk akan ditetapkan di permintaan keluar ke layanan target.
retain.queryparams T/A Menentukan parameter kueri tertentu yang akan ditetapkan pada permintaan keluar. Misalnya, untuk sertakan parameter kueri apikey dari pesan permintaan, tetapkan retain.queryparams untuk apikey. Beberapa parameter kueri ditetapkan sebagai daftar yang dipisahkan koma, misalnya, apikey,environment. Ini mengganti retain.queryparams.enabled.

Properti Transport ProxyEndpoint

Elemen ProxyEndpoint HTTPTargetConnection menentukan kumpulan HTTP properti transpor. Ini dapat digunakan untuk menetapkan konfigurasi tingkat transport.

Properti ditetapkan pada elemen ProxyEndpoint HTTPProxyConnection seperti yang ditunjukkan dalam contoh konfigurasi ini:

<ProxyEndpoint name="default">
  <HTTPProxyConnection>
    <BasePath>/v1/weather</BasePath>
    <Properties>
      <Property name="request.streaming.enabled">true</Property>
    </Properties>
  </HTTPProxyConnection>
</ProxyEndpoint>

Header permintaan

Permintaan HTTP masuk menyertakan header HTTP yang dikirim oleh klien. Header dengan nama yang cocok dengan pola X-Apigee-* akan dihapus dari header masuk jika klien mengirimkannya. Pola nama ini dicadangkan untuk Apigee.

Properti Transport ProxyEndpoint Spesifikasi

Nama Properti Nilai Default Deskripsi
X-Forwarded-For salah Jika disetel ke benar (true), alamat IP host virtual akan ditambahkan ke permintaan keluar sebagai header HTTP X-Forwarded-For.
request.streaming.
enabled
false Secara default (false), payload permintaan HTTP dibaca ke dalam buffer, dan kebijakan yang dapat beroperasi pada pekerjaan {i>payload<i} seperti yang diharapkan. Dalam kasus saat payload lebih besar dari (10 MB di Apigee), Anda dapat menyetel ke true. Saat true, payload permintaan HTTP tidak dibaca ke dalam {i>buffer<i} (penyangga); mereka di-streaming apa adanya ke alur permintaan TargetEndpoint. Dalam hal ini, setiap kebijakan yang beroperasi pada payload dalam alur permintaan ProxyEndpoint diabaikan. Lihat juga Permintaan streaming dan respons tersebut.
response.streaming.
enabled
false Secara {i>default<i} (salah), {i>payload<i} respons HTTP dibaca ke dalam {i>buffer<i}, dan kebijakan yang dapat beroperasi pada pekerjaan {i>payload<i} seperti yang diharapkan. Dalam kasus di mana payload lebih besar dari ukuran buffer (10 MB di Apigee), Anda dapat menyetel ke true. Saat true, payload respons HTTP tidak dibaca ke dalam {i>buffer<i} (penyangga); mereka yang di-streaming apa adanya ke klien. Dalam hal ini, setiap kebijakan yang beroperasi pada {i>payload<i} di dalam ProxyEndpoint alur respons diabaikan. Lihat juga Permintaan streaming dan respons tersebut.
compression.algorithm T/A

Secara default, Apigee menerima set jenis kompresi (gzip, deflate, atau tidak ada) untuk pesan yang diterima. Sebagai misalnya saat klien mengirimkan permintaan yang menggunakan kompresi gzip, Apigee meneruskan permintaan ke target menggunakan kompresi gzip. Anda dapat mengonfigurasi kompresi diterapkan secara eksplisit dengan menyetel properti ini pada TargetEndpoint atau ProxyEndpoint. Nilai yang didukung adalah:

  • gzip: selalu kirim pesan menggunakan kompresi gzip
  • deflate: selalu mengirim pesan menggunakan kompresi deflate
  • none: selalu mengirim pesan tanpa kompresi apa pun

Lihat juga: Apakah Apigee mendukung kompresi/de-kompresi dengan kompresi GZIP/deflate?

api.timeout T/A

Mengonfigurasi waktu tunggu untuk setiap proxy API (dalam milidetik)

Anda dapat mengonfigurasi proxy API, bahkan proxy dengan streaming aktif, ke waktu tunggu setelah waktu tertentu dengan status 504 Gateway Timeout.

Misalnya, untuk mengonfigurasi proxy agar waktu habis setelah 180.000 milidetik (tiga menit), tambahkan properti berikut ke HTTPProxyConnection:

<Property name="api.timeout">180000</Property>

Anda tidak dapat menetapkan properti ini dengan variabel.

Lihat Menyetel io.timeout.millis dan api.timeout.

HTTPHeader.allowDuplicates T/A

Gunakan setelan ini untuk mengizinkan header duplikat (untuk header tertentu).

<HTTPProxyConnection>
  <Properties>
     <Property name="HTTPHeader.allowDuplicates">Content-Type,Authorization</Property>
  </Properties>
</HTTPProxyConnection>
HTTPHeader.multiValued T/A

Gunakan setelan ini untuk mengizinkan header duplikat (untuk header tertentu).

<HTTPProxyConnection>
  <Properties>
    <Property name="HTTPHeader.multiValued">Content-Type,Authorization</Property>
  </Properties>
</HTTPProxyConnection>

Menyetel io.timeout.millis dan api.timeout

Operasi io.timeout.millis dan api.timeout saling berhubungan. Pada setiap permintaan ke proxy API:

  1. Ingress (disebut juga Load Balancer Internal) mengirimkan nilai waktu tunggunya ke Pemroses Pesan. Nilai waktu tunggu ini ditetapkan secara default ke 300 detik dan tidak dapat dikonfigurasi.
  2. Pemroses Pesan kemudian menetapkan api.timeout:
    1. Jika api.timeout tidak ditetapkan pada tingkat proxy, gunakan waktu tunggu yang disetel oleh Ingress.
    2. Jika api.timeout disetel di tingkat proxy, tetapkan di Pemroses Pesan ke lebih sedikit waktu tunggu Ingress atau nilai api.timeout.
  3. Nilai api.timeout menentukan jumlah waktu maksimum yang dimiliki proxy API dieksekusi dari permintaan API ke respons.

    Setelah setiap kebijakan di proxy API dieksekusi, atau sebelum Pemroses Pesan mengirimkan permintaan ke titik akhir target, Pemroses Pesan menghitung (api.timeout - waktu yang berlalu sejak awal permintaan).

    Jika nilainya kurang dari nol, jumlah waktu maksimum untuk menangani permintaan memiliki sudah tidak berlaku dan Pemroses Pesan menampilkan 504 Gateway Timeout.

  4. Nilai io.timeout.millis menentukan jumlah waktu maksimum yang endpoint target harus merespons.

    Sebelum terhubung ke endpoint target, Pemroses Pesan menentukan nilai (api.timeout - waktu yang berlalu dari awal permintaan) dan io.timeout.millis. Kemudian, io.timeout.millis akan ditetapkan ke nilai tersebut.

    Jika waktu tunggu terjadi saat menulis permintaan HTTP atau membaca Respons HTTP, 504 Gateway Timeout akan ditampilkan.