Referensi properti Endpoint

Anda sedang melihat dokumentasi Apigee Edge.
Buka dokumentasi Apigee X.
info

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

Properti transpor TargetEndpoint

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

Properti ditetapkan pada elemen HTTPTargetConnection TargetEndpoint seperti yang ditunjukkan di bawah ini:

<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>

Spesifikasi properti transpor TargetEndpoint

Nama Properti Nilai Default Deskripsi
keepalive.timeout.millis 60000 Waktu tunggu tidak ada aktivitas koneksi untuk koneksi target dalam kumpulan koneksi. Jika koneksi dalam kumpulan tidak ada aktivitas melebihi batas yang ditentukan, koneksi akan ditutup.
connect.timeout.millis

3000

Waktu tunggu koneksi target. Edge menampilkan kode status 503 HTTP jika waktu tunggu koneksi habis.

io.timeout.millis 55000

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

  • Jika waktu tunggu habis saat menulis permintaan HTTP, 408, Request Timeout akan ditampilkan.
  • Jika waktu tunggu habis saat membaca respons HTTP, 504, Gateway Timeout akan ditampilkan.

Nilai ini harus selalu lebih kecil dari nilai properti proxy_read_timeout host virtual.

Nilai ini harus kurang dari waktu tunggu yang digunakan oleh Router untuk berkomunikasi dengan Pemroses Pesan. Lihat Mengonfigurasi waktu tunggu Router untuk mengetahui informasi selengkapnya.

Lihat Menyetel io.timeout.millis dan api.timeout untuk Edge untuk mengetahui informasi selengkapnya.

supports.http10 true Jika ini adalah true dan klien mengirim permintaan 1.0, permintaan 1.0 juga akan terkirim ke target. Jika tidak, permintaan 1.1 akan dikirimkan ke target.
supports.http11 true Jika ini adalah true dan klien mengirimkan permintaan 1.1, target juga akan dikirimi permintaan 1.1. Jika tidak, permintaan 1.0 akan dikirim ke target.
use.proxy true Jika ditetapkan ke true, dan konfigurasi proxy ditentukan dalam http.properties (khusus deployment lokal), koneksi target akan ditetapkan untuk menggunakan proxy yang ditentukan.
use.proxy.tunneling true Jika parameter ini disetel ke true, dan konfigurasi proxy ditentukan dalam http.properties (khusus deployment lokal), koneksi target akan ditetapkan untuk menggunakan tunnel yang ditentukan. Jika target menggunakan TLS/SSL, properti ini akan diabaikan, dan pesan akan selalu dikirim melalui tunnel.
enable.method.override false Untuk metode HTTP yang ditentukan, menetapkan header X-HTTP-Method-Override pada permintaan keluar ke layanan target. Misalnya, <Property name="GET.override.method">POST</Property>
*.override.method T/A Untuk metode HTTP yang ditentukan, menetapkan header X-HTTP-Method-Override pada permintaan keluar. Misalnya, <Property name="GET.override.method">POST</Property>
request.streaming.enabled false

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

response.streaming.enabled false

Secara default (false), payload respons 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), Anda dapat menetapkan atribut ini ke true. Saat true, payload respons HTTP tidak dibaca ke dalam buffer; payload tersebut akan di-streaming apa adanya ke alur respons ProxyEndpoint. Dalam hal ini, kebijakan apa pun yang beroperasi pada payload dalam alur respons TargetEndpoint akan diabaikan. Lihat juga Permintaan dan respons streaming.

success.codes T/A

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

Menyetel properti ini akan menimpa nilai default. Oleh karena itu, jika Anda ingin menambahkan kode HTTP 400 ke daftar kode berhasil 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, kode 1XX, 2XX, dan 3XX akan dianggap gagal.

compression.algorithm T/A Secara default, Apigee Edge meneruskan permintaan ke target menggunakan jenis kompresi yang sama dengan permintaan klien. Jika permintaan diterima dari klien menggunakan, misalnya, kompresi gzip, Apigee Edge akan meneruskan permintaan tersebut ke target menggunakan kompresi gzip. Jika respons yang diterima dari target menggunakan deflate, maka Apigee Edge akan meneruskan respons ke klien menggunakan deflate. Nilai yang didukung adalah:
  • gzip: selalu mengirim pesan menggunakan kompresi gzip
  • deflate: selalu kirim 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
true Secara default, Apigee Edge selalu mempertahankan semua header HTTP pada pesan keluar. Jika ditetapkan ke true, semua header HTTP yang ada pada permintaan masuk akan ditetapkan 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 melewati 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 mengganti request.retain.headers.enabled. Jika request.retain.headers.enabled ditetapkan ke false, header apa pun yang ditentukan di properti request.retain.headers tetap ditetapkan pada pesan keluar.
response.retain.headers.
enabled
true Secara default, Apigee Edge selalu mempertahankan semua header HTTP pada pesan keluar. Jika ditetapkan ke true, semua header HTTP yang ada pada respons masuk dari layanan target akan ditetapkan 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 melewati header Expires, tetapkan nilai response.retain.headers ke Expires. Beberapa header HTTP ditetapkan sebagai daftar yang dipisahkan koma, misalnya, 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 tetap ditetapkan pada pesan keluar.
retain.queryparams.
enabled
true Secara default, Apigee Edge 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 ditetapkan sebagai daftar yang dipisahkan koma, misalnya, apikey,environment. Properti ini menggantikan retain.queryparams.enabled.

Properti transpor ProxyEndpoint

Elemen HTTPTargetConnection ProxyEndpoint menentukan kumpulan properti transport HTTP. Properti ini dapat digunakan untuk menetapkan konfigurasi tingkat transport.

Properti disetel pada elemen ProxyEndpoint HTTPProxyConnection sebagai berikut:

<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>

Untuk mengetahui informasi selengkapnya tentang host virtual, lihat Tentang host virtual.

Properti transpor ProxyEndpoint Spesifikasi

Nama Properti Nilai Default Deskripsi
X-Forwarded-For false Jika ditetapkan ke true, alamat IP host virtual akan ditambahkan ke permintaan keluar sebagai nilai header X-Forwarded-For HTTP.
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), Anda dapat menetapkan atribut ini ke true. Saat true, payload permintaan HTTP tidak dibaca ke buffer; payload akan di-streaming apa adanya ke alur permintaan TargetEndpoint. Dalam hal ini, kebijakan apa pun yang beroperasi pada payload dalam alur permintaan ProxyEndpoint akan diabaikan. Lihat juga Permintaan dan respons streaming.
response.streaming.
enabled
false Secara default (false), payload respons 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), Anda dapat menetapkan atribut ini ke true. Saat true, payload respons HTTP tidak dibaca ke dalam buffer; payload tersebut akan di-streaming apa adanya ke klien. Dalam hal ini, kebijakan apa pun yang beroperasi pada payload dalam alur respons ProxyEndpoint akan diabaikan. Lihat juga Permintaan dan respons streaming.
compression.algorithm T/A

Secara default, Apigee Edge mengikuti jenis kompresi yang disetel untuk setiap pesan yang diterima. Misalnya, jika klien mengirimkan permintaan yang menggunakan kompresi gzip, Apigee Edge akan meneruskan permintaan tersebut ke target menggunakan kompresi gzip. Anda dapat mengonfigurasi algoritma kompresi untuk diterapkan secara eksplisit dengan menetapkan properti ini pada TargetEndpoint atau ProxyEndpoint. Nilai yang didukung adalah:

  • gzip: selalu mengirim pesan menggunakan kompresi gzip
  • deflate: selalu kirim 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 proxy API individual

Anda dapat mengonfigurasi proxy API, bahkan proxy yang mengaktifkan streaming, untuk waktu habis setelah waktu yang ditentukan dengan status 504 Gateway Timeout. Kasus penggunaan utama adalah bagi pelanggan yang memiliki proxy API yang memerlukan waktu lebih lama untuk dieksekusi. Misalnya, Anda memerlukan proxy tertentu untuk kehabisan waktu 3 menit. Berikut adalah cara menggunakan api.timeout.

  1. Pertama, pastikan untuk mengonfigurasi load balancer, router, dan pemroses pesan agar waktu tunggu habis setelah tiga menit.
  2. Kemudian, konfigurasikan proxy yang relevan untuk kehabisan waktu dalam tiga menit. Tentukan nilai dalam milidetik. Contoh: <Property name="api.timeout">180000</Property>
  3. Namun, perlu diperhatikan bahwa menambah waktu tunggu sistem dapat menyebabkan masalah performa, karena semua proxy tanpa setelan api.timeout menggunakan waktu tunggu load balancer, router, dan pemroses pesan yang baru dan lebih tinggi. Jadi, konfigurasikan proxy API lain yang tidak memerlukan waktu tunggu lebih lama untuk menggunakan waktu tunggu yang lebih rendah. Misalnya, contoh berikut akan menyetel proxy API ke waktu habis setelah 1 menit:
    <Property name="api.timeout">60000</Property>

Anda tidak dapat menetapkan properti ini dengan variabel.

Pelanggan yang tidak dapat mengubah waktu tunggu Edge juga dapat mengonfigurasi waktu tunggu proxy API, selama waktu tunggunya lebih singkat daripada waktu tunggu prosesor pesan Edge standar, yaitu 57 detik.

Lihat Menyetel io.timeout.millis dan api.timeout untuk Edge untuk mengetahui informasi selengkapnya.

Menyetel io.timeout.millis dan api.timeout untuk Edge

Di Edge, operasi io.timeout.millis dan api.timeout saling berkaitan. Pada setiap permintaan ke proxy API:

  1. Router mengirimkan nilai waktu tunggunya ke Pemroses Pesan. Nilai waktu tunggu Router adalah nilai proxy_read_timeout yang ditetapkan oleh host virtual yang menangani permintaan, atau nilai waktu tunggu default 57 detik.
  2. Pemroses Pesan kemudian menetapkan api.timeout:
    1. Jika api.timeout tidak disetel di tingkat proxy, setel ke waktu tunggu Router.
    2. Jika api.timeout disetel di tingkat proxy, tetapkan setelan di Pemroses Pesan ke nilai waktu tunggu Router yang lebih rendah atau nilai api.timeout.
  3. Nilai api.timeout menetapkan durasi maksimum proxy API harus dieksekusi dari permintaan API ke respons.

    Setelah setiap kebijakan di proxy API dieksekusi, atau sebelum Pemroses Pesan mengirimkan permintaan ke endpoint target, Pemroses Pesan akan menghitung (api.timeout - waktu berlalu dari awal permintaan). Jika nilainya kurang dari nol, maka jumlah waktu maksimum untuk menangani permintaan telah habis masa berlakunya dan Pemroses Pesan akan menampilkan 504.

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

    Sebelum terhubung ke endpoint target, Pemroses Pesan menentukan nilai yang lebih sedikit (api.timeout - waktu berlalu dari awal permintaan) dan io.timeout.millis. Kode ini kemudian menetapkan io.timeout.millis ke nilai tersebut.

    • Jika waktu tunggu habis saat menulis permintaan HTTP, 408, Request Timeout akan ditampilkan.
    • Jika waktu tunggu habis saat membaca respons HTTP, 504, Gateway Timeout akan ditampilkan.

Tentang ScriptTarget untuk aplikasi Node.js

Elemen ScriptTarget digunakan untuk mengintegrasikan aplikasi Node.js ke proxy Anda. Untuk informasi penggunaan Node.js dan ScriptTarget, lihat:

Tentang endpoint HostedTarget

Tag <HostedTarget/> kosong memberi tahu Edge untuk menggunakan aplikasi Node.js sebagai targetnya yang di-deploy ke lingkungan Target yang Dihosting. Untuk mengetahui detailnya, lihat Ringkasan Target yang Dihosting.