Kebijakan InfoLayanan

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

Apa

Kebijakan Info Layanan memungkinkan Anda memanggil layanan lain dari alur proxy API. Anda dapat membuat pemanggilan ke layanan eksternal (seperti endpoint layanan RESTful eksternal) atau layanan internal (seperti proxy API dalam organisasi dan lingkungan yang sama).

  • Dalam kasus penggunaan eksternal, Anda membuat pemanggilan ke API pihak ketiga yang berada di luar cakupan {i>proxy<i}. Respons dari API pihak ketiga akan diuraikan dan disisipkan dalam respons API Anda pesan, memperkaya dan "menggabungkan" data untuk pengguna akhir aplikasi. Anda juga dapat mengajukan permintaan menggunakan kebijakan Info Layanan dalam alur permintaan, lalu meneruskan informasi dalam respons ke TargetEndpoint proxy API.
  • Dalam kasus penggunaan lain, Anda memanggil {i>proxy<i} yang ada di organisasi dan lingkungan yang sama dengan nomor yang Anda gunakan. Misalnya, Anda mungkin menemukan bahwa ini berguna ketika Anda memiliki {i>proxy<i} yang menawarkan beberapa fungsionalitas tingkat rendah yang akan digunakan oleh satu atau lebih {i>proxy<i} lainnya. Sebagai contoh, proxy yang mengekspos operasi buat/baca/perbarui/hapus dengan penyimpanan data backend dapat menjadi {i>proxy<i} target untuk beberapa {i>proxy<i} lainnya yang mengekspos data ke klien.

Kebijakan ini mendukung permintaan melalui HTTP dan HTTPS.

Contoh

Panggilan lokal ke proxy internal

<LocalTargetConnection>
    <APIProxy>data-manager</APIProxy>
    <ProxyEndpoint>default</ProxyEndpoint>
</LocalTargetConnection>

Contoh ini membuat pemanggilan ke proxy API lokal (yaitu, satu proxy di organisasi yang sama dan lingkungan) yang disebut data-manager, yang menentukan endpoint proxy yang namanya adalah default.

URL sebagai variabel

<HTTPTargetConnection>
    <URL>http://example.com/{request.myResourcePath}</URL>
</HTTPTargetConnection>

Contoh ini menggunakan variabel dalam URL untuk mengisi URL target secara dinamis. Tujuan bagian protokol URL, http://, tidak dapat ditentukan oleh variabel. Selain itu, Anda harus menggunakan variabel terpisah untuk bagian domain dari URL dan untuk bagian URL lainnya.

Geocoding / definisi permintaan Google

<ServiceCallout name="ServiceCallout-GeocodingRequest1">
    <DisplayName>Inline request message</DisplayName>
    <Request variable="authenticationRequest">
      <Set>
        <QueryParams>
          <QueryParam name="address">{request.queryparam.postalcode}</QueryParam>
          <QueryParam name="region">{request.queryparam.country}</QueryParam>
          <QueryParam name="sensor">false</QueryParam>
        </QueryParams>
      </Set>
    </Request>
    <Response>GeocodingResponse</Response>
    <Timeout>30000</Timeout>
    <HTTPTargetConnection>
      <URL>http://maps.googleapis.com/maps/api/geocode/json</URL>
    </HTTPTargetConnection>
</ServiceCallout>
http://maps.googleapis.com/maps/api/geocode/json

Sebagai ganti menggunakan kebijakan seperti Tetapkan Pesan untuk membuat objek permintaan, Anda dapat menentukannya langsung di kebijakan Info Layanan. Dalam contoh ini, kebijakan Pemanggilan Layanan menetapkan nilai dari tiga parameter kueri yang diteruskan ke layanan eksternal. Anda dapat membuat seluruh pesan permintaan dalam kebijakan Info Layanan yang menentukan payload, jenis encoding misalnya application/xml, header, parameter formulir, dll.

Berikut adalah contoh lain saat permintaan dibuat sebelum mencapai Info Layanan lebih lanjut.

<ServiceCallout name="ServiceCallout-GeocodingRequest2">
    <Request clearPayload="false" variable="GeocodingRequest"/>
    <Response>GeocodingResponse</Response>
    <Timeout>30000</Timeout>
    <HTTPTargetConnection>
      <URL>http://maps.googleapis.com/maps/api/geocode/json</URL>
    </HTTPTargetConnection>
</ServiceCallout>

Konten pesan permintaan diekstrak dari variabel yang disebut GeocodingRequest (yang dapat berupa diisi, misalnya, oleh kebijakan MenetapkanMessage). Pesan respons ditugaskan ke variabel yang disebut GeocodingResponse, yang merupakan tersedia untuk diuraikan oleh kebijakan Ekstrak Variabel atau dengan kode kustom yang ditulis dalam JavaScript atau Java. Kebijakan tersebut menunggu 30 detik untuk respons dari Google Geocoding API sebelum waktu habis.

Untuk contoh proxy API lengkap yang menggunakan contoh Service Keterangan ini, beserta Menetapkan kebijakan Pesan dan Ekstrak Variabel, lihat Menggunakan kebijakan komposisi.

Server target panggilan

<ServiceCallout async="false" continueOnError="false" enabled="true" name="service-callout">
    <DisplayName>service-callout</DisplayName>
    <Properties/>
    <Request clearPayload="true" variable="myRequest">
        <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    </Request>
    <Response>myResponse</Response>
    <HTTPTargetConnection>
        <LoadBalancer>
            <Algorithm>RoundRobin</Algorithm>
            <Server name="httpbin"/>
            <Server name="yahoo"/>
        </LoadBalancer>
        <Path>/get</Path>
    </HTTPTargetConnection>
</ServiceCallout>

Kebijakan ini menggunakan atribut LoadBalancer untuk memanggil server target dan melakukan load balancing di seluruh mereka. Dalam contoh ini, beban didistribusikan ke dua server target yang bernama "httpbin" dan "yahoo". Untuk informasi tentang cara menyiapkan Server Target untuk proxy Anda dan mengonfigurasi load balancing, lihat Load balancing di seluruh server backend.


Tentang kebijakan Info Layanan

Ada banyak skenario saat Anda dapat menggunakan kebijakan Info Layanan di proxy API. Sebagai Anda bisa mengonfigurasi proxy API untuk melakukan panggilan ke layanan eksternal guna mengirim data geolokasi, ulasan pelanggan, item dari katalog retail partner, dan sebagainya.

Info biasanya digunakan dengan dua kebijakan lain: Tetapkan Pesan dan Ekstrak Variabel.

  • Permintaan: Tetapkan Pesan akan mengisi pesan permintaan yang dikirim ke remote layanan.
  • Respons: Ekstrak Variabel akan mengurai respons dan mengekstrak variabel saat ini.

Komposisi kebijakan Info Layanan standar mencakup:

  1. Tetapkan Pesan kebijakan: Membuat pesan permintaan, mengisi header HTTP, parameter kueri, menetapkan HTTP verba, dll.
  2. Kebijakan Info Layanan: Mereferensikan pesan yang dibuat oleh Tetapkan Pesan kebijakan, menentukan URL target untuk panggilan eksternal, dan menentukan nama untuk objek respons yang ditampilkan oleh layanan target.

    Untuk meningkatkan performa, Anda juga dapat meng-cache respons Info Layanan, seperti yang dijelaskan dalam Rangkaian pesan Komunitas Apigee: https://community.apigee.com/questions/34110/how-can-i-store-the-results-of-the-servicecallout.html.
  3. Mengekstrak Variabel policy: Biasanya menentukan ekspresi JSONPath atau XPath yang mengurai pesan yang dihasilkan di Info Layanan. Kebijakan ini kemudian menetapkan variabel yang berisi nilai yang diuraikan dari Respons Info Layanan.

Lihat Menggunakan kebijakan untuk contoh proxy API lengkap yang menggunakan kebijakan Panggilan Layanan beserta kebijakan Tetapkan Pesan dan Ekstrak Variabel.

Penanganan error kustom

Referensi elemen

Berikut adalah elemen dan atribut yang dapat Anda konfigurasi di kebijakan ini:

<ServiceCallout async="false" continueOnError="false" enabled="true" name="Service-Callout-1">
    <DisplayName>Custom label used in UI</DisplayName>
    <Request clearPayload="true" variable="myRequest">
        <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
        <Remove>
            <ReasonPhrase/>
            <StatusCode/>
            <Path/>
            <Version/>
            <Verb/>
         </Remove>
         <Copy>
            <ReasonPhrase/>
            <StatusCode/>
            <Path/>
            <Version/>
            <Verb/>
        </Copy>
        <Add>
            <Headers/>
            <QueryParams/>
            <FormParams/>
        </Add>
        <Set>
            <Headers/>
            <QueryParams/>
            <FormParams/>
            <Payload/>
            <ReasonPhrase/>
            <StatusCode/>
            <Path/>
            <Version/>
            <Verb/>
        </Set>
    </Request>
    <Response>calloutResponse</Response>
    <Timeout>30000</Timeout>
    <HTTPTargetConnection>
        <URL>http://example.com</URL>
        <LoadBalancer/>
        <SSLInfo/>
        <Properties/>
    </HTTPTargetConnection>
    <LocalTargetConnection>
        <APIProxy/>
        <ProxyEndpoint/>
        <Path/>
    </LocalTargetConnection>
</ServiceCallout>

&lt;ServiceCallout&gt; atribut

<ServiceCallout async="false" continueOnError="false" enabled="true" name="Service-Callout-1">

Tabel berikut menjelaskan atribut yang umum untuk semua elemen induk kebijakan:

Atribut Deskripsi Default Ketersediaan
name

Nama internal kebijakan. Nilai atribut name dapat berisi huruf, angka, spasi, tanda hubung, garis bawah, dan titik. Nilai ini tidak boleh melebihi 255 karakter.

Secara opsional, gunakan elemen <DisplayName> untuk memberi label kebijakan di editor proxy UI pengelolaan dengan nama natural language yang berbeda.

T/A Wajib
continueOnError

Tetapkan ke false untuk menampilkan error saat kebijakan gagal. Diharapkan untuk sebagian besar kebijakan.

Setel ke true agar eksekusi alur dapat dilanjutkan bahkan setelah kebijakan gagal.

salah Opsional
enabled

Setel ke true untuk menerapkan kebijakan.

Setel ke false untuk menonaktifkan kebijakan. Kebijakan ini tidak akan ditegakkan meskipun tetap terikat pada alur.

true Opsional
async

Atribut ini tidak digunakan lagi.

salah Tidak digunakan lagi

&lt;DisplayName&gt; elemen

Gunakan selain atribut name untuk memberi label kebijakan di editor proxy UI dengan nama natural language yang berbeda.

<DisplayName>Policy Display Name</DisplayName>
Default

T/A

Jika Anda menghapus elemen ini, nilai atribut name kebijakan akan menjadi data

Ketersediaan Opsional
Jenis String

&lt;Request&gt; elemen

Menentukan variabel berisi pesan permintaan yang dikirim dari proxy API ke layanan lainnya. Variabel dapat dibuat oleh kebijakan sebelumnya dalam alur, atau Anda dapat membuatnya secara inline pada kebijakan Pemanggilan Layanan.

<Request clearPayload="true" variable="myRequest">
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <Remove>
        <ReasonPhrase/>
        <StatusCode/>
        <Path/>
        <Version/>
        <Verb/>
    </Remove>
    <Copy>
        <ReasonPhrase/>
        <StatusCode/>
        <Path/>
        <Version/>
        <Verb/>
    </Copy>
    <Add>
        <Headers/>
        <QueryParams/>
        <FormParams/>
    </Add>
    <Set>
        <Headers/>
        <QueryParams/>
        <FormParams/>
        <Payload/>
        <ReasonPhrase/>
        <StatusCode/>
        <Path/>
        <Version/>
        <Verb/>
    </Set>
</Request>

Sintaksis untuk tag <Remove>, <Copy>, <Add>, dan <Set> sama dengan sintaksis untuk Tetapkan Pesan kebijakan kami.

Kebijakan ini akan menampilkan error jika pesan permintaan tidak dapat diselesaikan atau tidak valid jenis pesan permintaan.

Dalam contoh yang paling sederhana, Anda meneruskan variabel yang berisi pesan permintaan yang telah diisi sebelumnya dalam alur proxy API:

<Request clearPayload="true" variable="myRequest"/>

Atau, Anda dapat mengisi pesan permintaan yang dikirim ke layanan eksternal dalam kebijakan Info Layanan itu sendiri:

<Request>
  <Set>
    <Headers>
      <Header name="Accept">application/json</Header>
    </Headers>
    <Verb>POST</Verb>
    <Payload contentType="application/json">{"message":"my test message"}</Payload>
  </Set>
  <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
</Request>
Default Jika Anda menghilangkan elemen Request, atau salah satu atributnya, Edge menetapkan nilai default berikut:

&lt;Request clearPayload=&quot;true&quot; variable=&quot;servicecallout.request&quot;/&gt;

Mari kita lihat arti nilai default ini. Pertama, clearPayload=true berarti bahwa objek permintaan dibuat setiap kali kebijakan Servicecallout dijalankan. Hal ini berarti bahwa permintaan dan jalur URI permintaan tidak pernah digunakan kembali. Kedua, variabel {i>default<i} nama, servicecallout.request, adalah nama yang dicadangkan yang ditetapkan ke permintaan jika Anda tidak memberikan nama.

Penting untuk mengetahui nama default ini jika Anda menggunakan penyamaran data -- jika Anda menghilangkan nama variabel, Anda perlu menambahkan servicecallout.request ke konfigurasi mask. Misalnya, jika Anda ingin menyamarkan header Otorisasi sehingga tidak muncul di sesi Trace, Anda akan menambahkan hal berikut ke konfigurasi penyamaran untuk mengambil nama default:

servicecallout.request.header.Authorization.

Kehadiran Opsional.
Jenis T/A

Atribut

Atribut Deskripsi Default Ketersediaan
variabel

Nama variabel yang akan berisi pesan permintaan.

servicecallout.request Opsional
clearPayload

Jika true, variabel yang berisi pesan permintaan akan dihapus setelah dikirim ke target HTTP untuk mengosongkan memori yang digunakan oleh pesan permintaan.

Setel clearPayload ke false hanya jika pesan permintaan diperlukan setelah Info Layanan telah dijalankan.

true Opsional

&lt;Request&gt;/&lt;IgnoreUnresolvedVariables&gt; elemen

Jika disetel ke true, kebijakan mengabaikan error variabel yang belum terselesaikan dalam permintaan.

<Request clearPayload="true" variable="myRequest">
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
</Request> 
Default salah
Kehadiran Opsional
Jenis Boolean

&lt;Response&gt; elemen

Sertakan elemen ini ketika logika proxy API memerlukan respons dari panggilan jarak jauh untuk diproses lebih lanjut.

Jika ada, elemen ini menentukan nama variabel yang akan berisi pesan respons yang diterima dari layanan eksternal. Respons dari target ditugaskan kepada variabel hanya ketika seluruh respons berhasil dibaca oleh kebijakan. Jika panggilan jarak jauh gagal karena alasan apa pun, kebijakan akan menampilkan error.

Jika elemen ini dihilangkan, proxy API tidak menunggu respons; Alur Proxy API dan eksekusi akan dilanjutkan dengan langkah-langkah alur berikutnya. Juga, untuk menyatakan hal yang sudah jelas, tanpa Response, respons dari target tidak tersedia untuk diproses oleh langkah selanjutnya, dan tidak ada cara bagi alur proxy untuk mendeteksi kegagalan dalam panggilan jarak jauh. Penggunaan umum untuk menghilangkan elemen Response saat menggunakan Servicecallout: untuk mencatat pesan ke sistem eksternal.

 <Response>calloutResponse</Response> 
Default NA
Kehadiran Opsional
Jenis String

<Waktu tunggu> elemen

Waktu dalam milidetik saat kebijakan Pemanggilan Layanan akan menunggu respons dari target. Anda tidak dapat menetapkan nilai ini secara dinamis saat runtime. Jika Pemanggilan Layanan mencapai waktu tunggu, HTTP 500 dikembalikan, kebijakan gagal, dan proxy API masuk ke status kesalahan, seperti yang dijelaskan dalam Menangani kesalahan.

<Timeout>30000</Timeout>
Default 55.000 milidetik (55 detik), setelan waktu tunggu HTTP default untuk Apigee Tepi
Kehadiran Opsional
Jenis Bilangan Bulat

&lt;HTTPTargetConnection&gt; elemen

Memberikan detail transpor seperti properti URL, TLS/SSL, dan HTTP. Lihat Referensi konfigurasi <TargetEndpoint>.

<HTTPTargetConnection>
    <URL>http://example.com</URL>
    <LoadBalancer/>
    <SSLInfo/>
    <Properties/>
</HTTPTargetConnection>
Default T/A
Kehadiran Wajib
Jenis T/A

&lt;HTTPTargetConnection&gt;/&lt;URL&gt; elemen

URL ke layanan yang dipanggil:

<HTTPTargetConnection>
    <URL>http://example.com</URL>
</HTTPTargetConnection>

Anda dapat menyediakan bagian URL secara dinamis dengan variabel. Namun, bagian protokol dari URL, http:// di bawah, tidak boleh yang ditentukan oleh variabel. Pada contoh berikutnya, Anda menggunakan variabel untuk menentukan nilai kueri :

<URL>http://example.com/forecastrss?w=${request.header.woeid}</URL>

Atau, tetapkan bagian jalur URL dengan variabel:

<URL>http://example.com/{request.resourcePath}?w=${request.header.woeid}</URL>

Jika Anda ingin menggunakan variabel untuk menentukan domain dan port URL, gunakan satu variabel hanya untuk domain dan port, dan variabel kedua untuk bagian lain dari URL:

<URL>http://{request.dom_port}/{request.resourcePath}</URL>
Default T/A
Kehadiran Wajib
Jenis String

&lt;HTTPTargetConnection&gt;/&lt;SSLInfo&gt; elemen

Konfigurasi TLS/SSL ke layanan backend. Untuk bantuan tentang konfigurasi TLS/SSL, lihat Mengonfigurasi TLS dari Edge ke backend (Cloud dan Private Cloud) dan "TLS/SSL TargetEndpoint Configuration" di referensi konfigurasi proxy API.

<HTTPTargetConnection>
    <URL>https://example.com</URL>
    <SSLInfo>
        <Enabled>true</Enabled>
        <ClientAuthEnabled>true</ClientAuthEnabled>
        <KeyStore>ref://mykeystoreref</KeyStore>  ## Use of a reference is recommended
        <KeyAlias>myKey</KeyAlias>
        <TrustStore>myTruststore</TrustStore>
        <Ciphers/>
        <Protocols/>
    </SSLInfo>
</HTTPTargetConnection>
Default T/A
Kehadiran Opsional
Jenis T/A

&lt;HTTPTargetConnection&gt;/&lt;Properties&gt; elemen

Properti transpor HTTP ke layanan backend. Untuk informasi selengkapnya, lihat Referensi properti endpoint.

<HTTPTargetConnection>
    <URL>http://example.com</URL>
    <Properties>
        <Property name="allow.http10">true</Property>
        <Property name="request.retain.headers">
          User-Agent,Referer,Accept-Language
        </Property>
    </Properties>
</HTTPTargetConnection>
Default T/A
Kehadiran Opsional
Jenis T/A

&lt;HTTPTargetConnection&gt;/&lt;LoadBalancer&gt; elemen

Panggil satu atau beberapa server target dan lakukan load balancing pada server tersebut. Lihat Target panggilan server di bagian Contoh. Lihat juga Load balancing di seluruh backend server. Lihat juga komunitas ini post yang membahas cara untuk memanggil server target dari kebijakan Service Keterangan dan menggunakan Aturan Rute.

<HTTPTargetConnection> <LoadBalancer> <Algorithm>RoundRobin</Algorithm> <Server name="httpbin"/> <Server name="yahoo"/> </LoadBalancer> <Path>/get</Path> </HTTPTargetConnection>
Default T/A
Kehadiran Opsional
Jenis T/A

&lt;LocalTargetConnection&gt; elemen

Menentukan proxy lokal -- yaitu, proxy dalam organisasi dan lingkungan yang sama -- seperti target info layanan.

Untuk menentukan target lebih lanjut, gunakan elemen <APIProxy> dan <ProxyEndpoint>, atau elemen <Path>.

<LocalTargetConnection>
   <APIProxy/>
   <ProxyEndpoint/>
   <Path/>
</LocalTargetConnection>
Default T/A
Kehadiran Wajib
Jenis T/A

&lt;LocalTargetConnection&gt;/&lt;APIProxy&gt; elemen

Nama proxy API yang merupakan target panggilan lokal. Proxy harus sama organisasi dan lingkungan sebagai {i> proxy<i} yang melakukan panggilan.

<LocalTargetConnection>
   <APIProxy>data-manager</APIProxy>
   <ProxyEndpoint>default</ProxyEndpoint>
</LocalTargetConnection>

Bersama dengan elemen <APIProxy>, sertakan <ProxyEndpoint> untuk menentukan nama endpoint proxy yang seharusnya ditargetkan untuk panggilan tersebut.

<LocalTargetConnection>
   <APIProxy/>
   <ProxyEndpoint/>
</LocalTargetConnection> 
Default T/A
Kehadiran Wajib
Jenis String

&lt;LocalTargetConnection&gt;/&lt;ProxyEndpoint&gt; elemen

Nama endpoint proxy yang harus menjadi target panggilan. Ini adalah titik akhir {i>proxy<i} di proxy API yang ditetapkan dengan elemen <APIProxy>.

<LocalTargetConnection>
   <APIProxy>data-manager</APIProxy>
   <ProxyEndpoint>default</ProxyEndpoint>
</LocalTargetConnection>
Default T/A
Kehadiran Opsional
Jenis T/A

&lt;LocalTargetConnection&gt;/&lt;Path&gt; elemen

Jalur ke endpoint yang ditarget. Endpoint harus merujuk ke proxy dalam organisasi dan lingkungan sebagai {i> proxy<i} yang melakukan panggilan.

Gunakan ini, bukan pasangan <APIProxy>/<ProxyEndpoint>, jika Anda tidak tahu -- atau tidak bisa mengandalkan -- nama {i>proxy<i}. Jalur ini mungkin merupakan target yang dapat diandalkan.

<LocalTargetConnection>
   <Path>/data-manager</Path>
</LocalTargetConnection>
Default T/A
Kehadiran Opsional
Jenis T/A

Skema

Variabel flow

Variabel flow memungkinkan perilaku dinamis kebijakan dan Flow saat runtime, berdasarkan HTTP header, konten pesan, atau konteks Alur. Variabel Flow yang telah ditentukan sebelumnya tersedia setelah kebijakan Pemanggilan Layanan dijalankan. Untuk mengetahui informasi selengkapnya tentang variabel Alur, lihat Referensi variabel.

Pemanggilan Layanan memiliki permintaan dan respons sendiri, dan Anda dapat mengakses data tersebut melalui variabel. Karena pesan utama menggunakan request.* dan Awalan variabel response.*, gunakan myrequest.* dan Awalan calloutResponse.* (default dalam konfigurasi Info Layanan) ke mendapatkan data pesan khusus untuk Info Layanan. Contoh pertama dalam tabel berikut menunjukkan cara mendapatkan {i>header<i} HTTP di {i>Service callout<i}.

Variabel Deskripsi

Berikut adalah contoh cara mendapatkan header respons dan permintaan Info Layanan mirip dengan cara mendapatkan {i>header<i} dari permintaan dan respons utama.

calloutResponse.header.HeaderName

myRequest.header.HeaderName

dengan calloutResponse adalah nama variabel untuk Respons di Layanan Keterangan, dan myRequest adalah nama variabel untuk Permintaan. Contoh:

calloutResponse.header.Content-Length

menampilkan header Panjang Konten dari respons Info Layanan.

Cakupan: Mulai dari Info Layanan
Jenis: String
Izin: Baca/Tulis

Header pesan di permintaan atau respons Info Layanan. Misalnya, jika API target proxy adalah http://example.com, dan target Info Layanan adalah http://mocktarget.apigee.net, variabel ini adalah header untuk pemanggilan http://mocktarget.apigee.net.

servicecallout.requesturi

Cakupan: Dari permintaan Info Layanan dan seterusnya
Jenis: String
Izin: Baca/Tulis

URI TargetEndpoint untuk kebijakan ServiceInfo. URI-nya adalah URL TargetEndpoint tanpa spesifikasi protokol dan domain.

servicecallout.{policy-name}.target.url

Cakupan: Dari permintaan Info Layanan dan seterusnya
Jenis: String
Izin: Baca/Tulis

URL target untuk Info Layanan.

calloutResponse.content

dengan calloutResponse adalah nama variabel <Response> di konfigurasi Service callout.

Cakupan: Dari respons Info Layanan ke depannya
Jenis: String
Izin: Baca/Tulis

Isi respons dari Info Layanan.

servicecallout.{policy-name}.expectedcn

Cakupan: Dari permintaan Info Layanan dan seterusnya
Jenis: String
Izin: Baca/Tulis

Nama Umum TargetEndpoint yang diharapkan sebagaimana dimaksud dalam ServiceKeterangan lebih lanjut. Ini hanya berguna jika TargetEndpoint merujuk ke TLS/SSL endpoint.

servicecallout.{policy-name}.failed

Cakupan: Dari respons Info Layanan ke depannya
Jenis: Boolean
Izin: Baca/Tulis

Boolean yang menunjukkan apakah kebijakan berhasil, salah, atau gagal, benar (true).

Error

Bagian ini menjelaskan kode kesalahan dan pesan kesalahan yang dikembalikan dan variabel kesalahan yang disetel oleh Edge saat kebijakan ini memicu kesalahan. Informasi ini penting untuk diketahui jika Anda mengembangkan aturan kesalahan untuk menangani kesalahan. Untuk mempelajari lebih lanjut, lihat Yang perlu Anda ketahui tentang error kebijakan dan Penanganan kesalahan.

Error runtime

Error ini dapat terjadi saat kebijakan dijalankan.

Kode error Status HTTP Penyebab Perbaiki
steps.servicecallout.ExecutionFailed 500

Error ini dapat terjadi jika:

  • kebijakan diminta untuk menangani input yang salah format atau tidak valid.
  • layanan target backend menampilkan status error (secara default, 4xx atau 5xx).
steps.servicecallout.RequestVariableNotMessageType 500 Variabel Permintaan yang ditentukan dalam kebijakan bukan jenis Pesan. Misalnya, jika itu berupa string atau jenis non-pesan lainnya, Anda akan melihat pesan {i>error<i} seperti ini.
steps.servicecallout.RequestVariableNotRequestMessageType 500 Variabel Request yang ditentukan dalam kebijakan bukan jenis Request Message. Sebagai misalnya, jika berupa Jenis respons, Anda akan melihat error ini.

Error saat deployment

Error ini dapat terjadi saat Anda men-deploy proxy yang berisi kebijakan ini.

Nama error Penyebab Perbaiki
URLMissing Elemen <URL> di dalam <HTTPTargetConnection> tidak ada atau kosong.
ConnectionInfoMissing Error ini terjadi jika kebijakan tidak memiliki <HTTPTargetConnection> atau <LocalTargetConnection> .
InvalidTimeoutValue Error ini terjadi jika nilai <Timeout> negatif atau nol.

Variabel kesalahan

Variabel ini ditetapkan saat terjadi error runtime. Untuk informasi selengkapnya, lihat Yang perlu Anda ketahui tentang error kebijakan.

Variabel Di mana Contoh
fault.name="fault_name" fault_name adalah nama kesalahan, seperti yang tercantum dalam tabel Error runtime di atas. Nama kesalahan adalah bagian terakhir dari kode kesalahan. fault.name = "RequestVariableNotMessageType"
servicecallout.policy_name.failed policy_name adalah nama kebijakan yang ditentukan pengguna yang menampilkan kesalahan. servicecallout.SC-GetUserData.failed = true

Contoh respons error

{  
   "fault":{  
      "detail":{  
         "errorcode":"steps.servicecallout.RequestVariableNotMessageType"
      },
      "faultstring":"ServiceCallout[ServiceCalloutGetMockResponse]: 
            request variable data_str value is not of type Message"
   }
}

Contoh aturan kesalahan

<faultrule name="VariableOfNonMsgType"></faultrule><FaultRule name="RequestVariableNotMessageType">
    <Step>
        <Name>AM-RequestVariableNotMessageType</Name>
    </Step>
    <Condition>(fault.name = "RequestVariableNotMessageType")</Condition>
</FaultRule>

Topik terkait