Referensi properti endpoint

Halaman ini berlaku untuk Apigee dan Apigee Hybrid.

Lihat dokumentasi Apigee Edge.

Topik ini menjelaskan properti transportasi yang dapat ditetapkan dalam konfigurasi TargetEndpoint dan ProxyEndpoint untuk mengontrol perilaku koneksi dan pengiriman pesan. Untuk cakupan lengkap opsi konfigurasi TargetEndpoint dan ProxyEndpoint, lihat Referensi konfigurasi proxy API.

Properti Transportasi TargetEndpoint

Elemen HTTPTargetConnection dalam konfigurasi TargetEndpoint menentukan serangkaian properti transportasi HTTP. Anda dapat menggunakan properti ini untuk menyetel konfigurasi tingkat transportasi.

Properti ditetapkan pada elemen TargetEndpoint HTTPTargetConnection seperti yang ditunjukkan dalam konfigurasi contoh 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>

Spesifikasi Properti Transportasi TargetEndpoint

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

3000

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

ignore.allow.header.for.405

true

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

io.timeout.millis 55000

Jika tidak ada data yang akan dibaca selama jumlah milidetik yang ditentukan, atau jika soket tidak siap untuk menulis data selama jumlah milidetik yang ditentukan, transaksi akan diperlakukan sebagai waktu tunggu habis.

  • Jika terjadi waktu tunggu habis saat membaca permintaan HTTP dari ingress, 408 Request Timeout akan ditampilkan. 408 Request Timeout tidak akan ditampilkan jika terjadi waktu tunggu habis saat menulis permintaan ke target.
  • Jika terjadi waktu tunggu saat menulis permintaan HTTP atau membaca respons HTTP, 504 Gateway Timeout akan ditampilkan.

Lihat Menetapkan io.timeout.millis dan api.timeout.

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

Jika file penggantian Apigee Hybrid berisi konfigurasi HTTP_PROXY, seperti yang dijelaskan dalam Mengonfigurasi proxy penerusan untuk proxy API, gunakan properti ini untuk mengelola/mengontrol proxy mana yang tidak boleh menggunakan konfigurasi proxy.

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

use.proxy.tunneling true

Jika disetel ke benar (true), dan konfigurasi proxy ditentukan file penggantian Apigee Hybrid seperti yang dijelaskan dalam Mengonfigurasi penerusan proxy untuk proxy API, maka koneksi target akan disetel untuk menggunakan tunnel yang ditentukan. Jika target menggunakan TLS/SSL, properti ini akan diabaikan, dan pesan akan selalu dikirim menggunakan tunnel.

response.payload.
parse.limit
10M Secara default (10M). Gunakan properti response.payload.parse.limit untuk menetapkan ukuran payload maksimum yang dapat diproses dalam alur respons, dalam megabyte (M). Batas yang dapat dikonfigurasi minimum adalah 10M dan batas yang dapat dikonfigurasi maksimum adalah 30M. Jika properti tidak ditetapkan, batas defaultnya adalah 10 Juta.

Lihat juga Ukuran payload pesan.

request.streaming.enabled false

Secara default (false), payload permintaan HTTP dibaca ke dalam buffer, dan kebijakan yang dapat beroperasi pada payload berfungsi seperti yang diharapkan. Jika payload lebih besar daripada ukuran buffer (10 MB di Apigee), Anda dapat menetapkan atribut ini ke true. Jika true, payload permintaan HTTP tidak dibaca ke dalam buffer; payload tersebut di-streaming apa adanya ke endpoint target. Dalam hal ini, kebijakan apa pun yang beroperasi pada payload dalam alur permintaan TargetEndpoint akan dilewati. Lihat juga Permintaan dan respons streaming.

response.streaming.enabled false

Secara default (salah), muatan respons HTTP dibaca ke dalam buffer, dan kebijakan yang dapat beroperasi pada muatan berfungsi seperti yang diharapkan. Jika payload lebih besar daripada ukuran buffer (10 MB di Apigee), Anda dapat menetapkan atribut ini ke benar (true). Jika benar (true), muatan respons HTTP tidak dibaca ke dalam buffer; muatan tersebut di-streaming apa adanya ke alur respons ProxyEndpoint. Dalam hal ini, kebijakan apa pun yang beroperasi pada payload dalam alur respons TargetEndpoint akan dilewati. Lihat juga Permintaan dan respons streaming.

success.codes T/A

Secara default, Apigee memperlakukan kode HTTP 4XX atau 5XX sebagai error, dan memperlakukan kode HTTP 1XX, 2XX, 3XX sebagai keberhasilan. Properti ini memungkinkan definisi eksplisit kode keberhasilan, misalnya, 2XX, 1XX, 505 memperlakukan kode respons HTTP 100, 200, dan 505 sebagai keberhasilan.

Menetapkan properti ini akan menggantikan nilai default. Oleh karena itu, jika Anda ingin menambahkan kode HTTP 400 ke daftar kode keberhasilan default, tetapkan properti ini sebagai:

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

Jika Anda hanya ingin kode HTTP 400 dianggap sebagai kode keberhasilan, tetapkan properti sebagai:

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

Dengan menetapkan kode HTTP 400 sebagai satu-satunya kode keberhasilan, kode 1xx, 2xx, dan 3xx dianggap sebagai kegagalan.

compression.algorithm T/A Secara default, Apigee mematuhi jenis kompresi yang ditetapkan (gzip, deflate, atau tidak ada) untuk pesan yang diterima. Jika permintaan diterima dari klien menggunakan, misalnya, kompresi gzip, maka Apigee akan meneruskan permintaan ke target menggunakan kompresi gzip. Jika respons yang diterima dari target menggunakan deflate, Apigee akan meneruskan respons ke klien menggunakan deflate. Nilai yang didukung adalah:
  • gzip: selalu mengirim pesan menggunakan kompresi gzip
  • deflate: selalu mengirim pesan menggunakan kompresi deflate
  • none: selalu mengirim pesan tanpa kompresi

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

request.retain.headers.
enabled
true Secara default, Apigee selalu mempertahankan semua header HTTP pada pesan keluar. Jika disetel ke true, semua header HTTP yang ada pada permintaan masuk akan disetel pada permintaan keluar.
request.retain.headers T/A Menentukan header HTTP tertentu dari permintaan yang harus ditetapkan pada permintaan keluar ke layanan target. Misalnya, untuk meneruskan header User-Agent, tetapkan nilai request.retain.headers ke User-Agent. Beberapa header HTTP ditentukan sebagai daftar yang dipisahkan koma, misalnya, User-Agent,Referer,Accept-Language. Properti ini menggantikan request.retain.headers.enabled. Jika request.retain.headers.enabled ditetapkan ke false, header apa pun yang ditentukan dalam properti request.retain.headers akan tetap ditetapkan pada pesan keluar.
response.retain.headers.
enabled
true Secara default, Apigee selalu mempertahankan semua header HTTP pada pesan keluar. Jika disetel ke true, semua header HTTP yang ada pada respons masuk dari layanan target akan disetel pada respons keluar sebelum diteruskan ke ProxyEndpoint.
response.retain.headers T/A Menentukan header HTTP tertentu dari respons yang harus ditetapkan pada respons keluar sebelum diteruskan ke ProxyEndpoint. Misalnya, untuk meneruskan header Expires, tetapkan nilai response.retain.headers ke Expires. Beberapa header HTTP ditentukan sebagai daftar yang dipisahkan koma, misalnya, Expires,Set-Cookie. Properti ini menggantikan response.retain.headers.enabled. Jika response.retain.headers.enabled ditetapkan ke false, header apa pun yang ditentukan dalam properti response.retain.headers masih ditetapkan pada pesan keluar.
retain.queryparams.
enabled
true Secara default, Apigee selalu mempertahankan semua parameter kueri pada permintaan keluar. Jika ditetapkan ke true, semua parameter kueri yang ada pada permintaan masuk akan ditetapkan pada permintaan keluar ke layanan target.
retain.queryparams T/A Menentukan parameter kueri tertentu yang akan ditetapkan pada permintaan keluar. Misalnya, untuk menyertakan parameter kueri apikey dari pesan permintaan, tetapkan retain.queryparams ke apikey. Beberapa parameter kueri ditentukan sebagai daftar yang dipisahkan koma, misalnya, apikey,environment. Properti ini menggantikan retain.queryparams.enabled.

Properti Transportasi ProxyEndpoint

Elemen ProxyEndpoint HTTPTargetConnection menentukan serangkaian properti transportasi HTTP. Properti ini dapat digunakan untuk menetapkan konfigurasi tingkat transportasi.

Properti ditetapkan pada elemen ProxyEndpoint HTTPProxyConnection seperti yang ditunjukkan dalam konfigurasi contoh 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 permintaan masuk jika klien mengirimkannya. Pola nama ini dicadangkan untuk Apigee.

Spesifikasi Properti Transportasi ProxyEndpoint

Nama Properti Nilai Default Deskripsi
X-Forwarded-For false Jika disetel ke benar, alamat IP host virtual akan ditambahkan ke permintaan keluar sebagai nilai 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 payload berfungsi seperti yang diharapkan. Jika payload lebih besar dari ukuran buffer (10 MB di Apigee), Anda dapat menetapkan atribut ini ke true. Saat true, muatan permintaan HTTP tidak dibaca ke dalam buffer; muatan tersebut di-streaming apa adanya ke alur permintaan TargetEndpoint. Dalam hal ini, kebijakan apa pun yang beroperasi pada payload dalam alur permintaan ProxyEndpoint akan dilewati. Lihat juga Permintaan dan respons streaming.
request.payload.
parse.limit
10M Secara default (10M). Gunakan properti request.payload.parse.limit untuk menetapkan ukuran payload maksimum yang dapat diproses dalam alur permintaan, dalam megabyte (M). Batas yang dapat dikonfigurasi minimum adalah 10M dan batas yang dapat dikonfigurasi maksimum adalah 30M. Jika properti tidak ditetapkan, batas defaultnya adalah 10 Juta.

Lihat juga Ukuran payload pesan.

response.streaming.
enabled
false Secara default (salah), muatan respons HTTP dibaca ke dalam buffer, dan kebijakan yang dapat beroperasi pada muatan berfungsi seperti yang diharapkan. Jika payload lebih besar daripada ukuran buffer (10 MB di Apigee), Anda dapat menetapkan atribut ini ke true. Saat true, muatan respons HTTP tidak dibaca ke dalam buffer; muatan tersebut di-streaming apa adanya ke klien. Dalam hal ini, kebijakan apa pun yang beroperasi pada payload dalam alur respons ProxyEndpoint akan dilewati. Lihat juga Permintaan dan respons streaming.
compression.algorithm T/A

Secara default, Apigee mematuhi jenis kompresi yang ditetapkan (gzip, deflate, atau tidak ada) untuk pesan yang diterima. Misalnya, jika klien mengirimkan permintaan yang menggunakan kompresi gzip, Apigee akan meneruskan permintaan ke target menggunakan kompresi gzip. Anda dapat mengonfigurasi algoritma kompresi agar diterapkan secara eksplisit dengan menyetel properti ini di TargetEndpoint atau ProxyEndpoint. Nilai yang didukung adalah:

  • gzip: selalu mengirim pesan menggunakan kompresi gzip
  • deflate: selalu mengirim pesan menggunakan kompresi deflate
  • none: selalu mengirim pesan tanpa kompresi

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

api.timeout T/A

Mengonfigurasi waktu tunggu untuk setiap proxy API (dalam milidetik)

Anda dapat mengonfigurasi proxy API, bahkan yang mengaktifkan streaming, agar waktu tunggu habis setelah waktu yang ditentukan dengan status 504 Gateway Timeout.

Misalnya, untuk mengonfigurasi proxy agar waktu tunggu 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 Menetapkan 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 terkait. Pada setiap permintaan ke proxy API:

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

    Setelah setiap kebijakan di proxy API dieksekusi, atau sebelum Message Processor mengirim permintaan ke endpoint target, Message Processor menghitung (api.timeout - waktu yang berlalu sejak awal permintaan).

    Jika nilainya kurang dari nol, waktu maksimum untuk menangani permintaan telah berakhir dan Message Processor akan menampilkan 504 Gateway Timeout.

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

    Sebelum terhubung ke endpoint target, Message Processor menentukan yang lebih kecil antara (api.timeout - waktu yang berlalu sejak awal permintaan) dan io.timeout.millis. Kemudian, io.timeout.millis akan ditetapkan ke nilai tersebut.

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