Kebijakan ServiceInfo

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

Apa

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

  • Dalam kasus penggunaan eksternal, Anda membuat info ke API pihak ketiga yang berada di luar proxy Anda. Respons dari API pihak ketiga diuraikan dan disisipkan dalam pesan respons API, sehingga memperkaya dan "menggabungkan" data untuk pengguna akhir aplikasi. Anda juga dapat membuat permintaan menggunakan kebijakan Pemanggilan Layanan dalam alur permintaan, lalu meneruskan informasi dalam respons ke TargetEndpoint proxy API.
  • Dalam kasus penggunaan lain, panggil proxy yang berada di organisasi dan lingkungan yang sama dengan yang Anda gunakan untuk melakukan panggilan. Misalnya, hal ini mungkin berguna saat Anda memiliki proxy yang menawarkan beberapa fungsionalitas tingkat rendah terpisah yang akan digunakan oleh satu atau beberapa proxy lain. Misalnya, proxy yang mengekspos operasi buat/baca/perbarui/hapus dengan penyimpanan data backend dapat menjadi proxy target untuk beberapa proxy lain 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 info ke proxy API lokal (yaitu, proxy di organisasi dan lingkungan yang sama) yang disebut data-manager, yang menentukan endpoint proxy-nya yang namanya adalah default.

URL sebagai variabel

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

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

Geocoding Google / definisikan permintaan

<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

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

Berikut ini contoh lain saat permintaan dibuat sebelum mencapai kebijakan Pemanggilan Layanan.

<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 diisi, misalnya, oleh kebijakan ChooseMessage). Pesan respons ditetapkan ke variabel yang disebut GeocodingResponse, yang dapat diurai oleh kebijakan Ekstrak Variabel atau dengan kode kustom yang ditulis dalam JavaScript atau Java. Kebijakan ini menunggu 30 detik untuk respons dari Google Geocoding API sebelum waktu habis.

Untuk mengetahui contoh proxy API lengkap yang menggunakan contoh Pemanggilan Layanan ini, beserta kebijakan Tetapkan Pesan dan Ekstrak Variabel, lihat Menggunakan komposisi kebijakan.

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 server tersebut. Dalam contoh ini, beban didistribusikan di dua server target bernama "httpbin" dan "yahoo". Untuk mengetahui informasi tentang cara menyiapkan Server Target untuk proxy dan mengonfigurasi load balancing, lihat Load balancing di seluruh server backend.


Tentang kebijakan Panggilan Layanan

Ada banyak skenario ketika Anda dapat menggunakan kebijakan Service Callout di proxy API. Misalnya, Anda dapat mengonfigurasi proxy API untuk melakukan panggilan ke layanan eksternal guna mengirimkan data geolokasi, ulasan pelanggan, item dari katalog retail partner, dan sebagainya.

Info biasanya digunakan dengan dua kebijakan lainnya: Menetapkan Variabel Pesan dan Ekstrak.

  • Permintaan: Tetapkan Pesan mengisi pesan permintaan yang dikirim ke layanan jarak jauh.
  • Response: Extract Variables mengurai respons dan mengekstrak konten tertentu.

Komposisi kebijakan Pemanggilan Layanan standar mencakup:

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

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

Lihat Menggunakan komposisi kebijakan untuk contoh proxy API lengkap yang menggunakan kebijakan Pemanggilan 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>

Atribut <ServiceCallout>

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

Tabel berikut menjelaskan atribut yang sama 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.

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

T/A Wajib
continueOnError

Setel ke false untuk menampilkan error jika kebijakan gagal. Ini adalah perilaku yang wajar untuk sebagian besar kebijakan.

Setel ke true agar eksekusi alur tetap berlanjut bahkan setelah kebijakan gagal.

false Opsional
enabled

Setel ke true untuk menerapkan kebijakan.

Setel ke false untuk menonaktifkan kebijakan. Kebijakan tidak akan diterapkan meskipun tetap melekat pada alur.

true Opsional
async

Atribut ini sudah tidak digunakan lagi.

false Tidak digunakan lagi

Elemen <DisplayName>

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

<DisplayName>Policy Display Name</DisplayName>
Default

T/A

Jika Anda menghapus elemen ini, nilai atribut name kebijakan akan digunakan.

Ketersediaan Opsional
Jenis String

Elemen <Request>

Menentukan variabel yang berisi pesan permintaan yang dikirim dari proxy API ke layanan lain. Variabel dapat dibuat oleh kebijakan sebelumnya di alur, atau Anda dapat membuatnya inline di 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 kebijakan Assign Message.

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

Dalam contoh 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 Panggilan 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 akan menetapkan nilai default berikut:

<Request clearPayload="true" variable="servicecallout.request"/>

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

Penting untuk mengetahui nama default ini jika Anda menggunakan data masking -- jika menghilangkan nama variabel, Anda harus menambahkan servicecallout.request ke konfigurasi mask. Misalnya, jika Anda ingin menyamarkan header Authorization agar tidak muncul di sesi Trace, Anda perlu menambahkan kode berikut ke konfigurasi masking 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 permintaan dikirim ke target HTTP untuk mengosongkan memori yang digunakan oleh pesan permintaan.

Tetapkan opsi clearPayload ke false hanya jika pesan permintaan diperlukan setelah Service Callout dijalankan.

true Opsional

Elemen <Request>/<IgnoreUnresolvedVariables>

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

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

Elemen <Response>

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

Jika ada, elemen ini akan menentukan nama variabel yang akan berisi pesan respons yang diterima dari layanan eksternal. Respons dari target ditetapkan ke variabel hanya jika 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 akan menunggu respons; eksekusi alur Proxy API berlanjut dengan langkah alur berikutnya. Selain itu, untuk menyatakan hal yang sudah jelas, tanpa elemen Response, respons dari target tidak tersedia untuk diproses melalui langkah-langkah berikutnya, dan alur proxy tidak dapat 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 TA
Kehadiran Opsional
Jenis String

Elemen <Timeout>

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

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

Elemen <HTTPTargetConnection>

Memberikan detail transportasi 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

Elemen <HTTPTargetConnection>/<URL>

URL ke layanan yang dipanggil:

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

Anda dapat menyediakan sebagian URL secara dinamis dengan variabel. Namun, bagian protokol URL, http:// di bawah, tidak dapat ditentukan oleh variabel. Pada contoh berikutnya, Anda menggunakan variabel untuk menentukan nilai parameter 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, serta variabel kedua untuk bagian URL lainnya:

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

Elemen <HTTPTargetConnection>/<SSLInfo>

Konfigurasi TLS/SSL ke layanan backend. Untuk mendapatkan bantuan terkait konfigurasi TLS/SSL, lihat Mengonfigurasi TLS dari Edge ke backend (Cloud dan Private Cloud) dan "Konfigurasi TargetEndpoint TLS/SSL" dalam 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

Elemen <HTTPTargetConnection>/<Properties>

Properti transpor HTTP ke layanan backend. Untuk mengetahui 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

Elemen <HTTPTargetConnection>/<LoadBalancer>

Panggil satu atau beberapa server target dan lakukan load balancing pada server tersebut. Lihat contoh Server target panggilan di bagian Contoh. Lihat juga Load balancing di seluruh server backend. Lihat juga postingan komunitas ini yang membahas cara memanggil server target dari kebijakan Info Layanan 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

Elemen <LocalTargetConnection>

Menentukan proxy lokal -- yaitu, proxy di organisasi dan lingkungan yang sama -- sebagai target pemanggilan 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

Elemen <LocalTargetConnection>/<APIProxy>

Nama proxy API yang merupakan target panggilan lokal. Proxy harus berada dalam organisasi dan lingkungan yang sama dengan proxy yang melakukan panggilan.

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

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

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

Elemen <LocalTargetConnection>/<ProxyEndpoint>

Nama endpoint proxy yang akan menjadi target panggilan. Ini adalah endpoint proxy 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

Elemen <LocalTargetConnection>/<Path>

Jalur ke endpoint yang ditargetkan. Endpoint harus merujuk ke proxy dalam organisasi dan lingkungan yang sama dengan proxy yang melakukan panggilan.

Gunakan ini sebagai ganti pasangan <APIProxy>/<ProxyEndpoint> jika Anda tidak mengetahui -- atau tidak dapat mengandalkan -- nama proxy. Jalur itu mungkin target yang bisa diandalkan.

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

Skema

Variabel alur

Variabel flow mengaktifkan perilaku dinamis kebijakan dan Flow saat runtime, berdasarkan header HTTP, konten pesan, atau konteks Alur. Variabel Alur standar berikut tersedia setelah kebijakan Pemanggilan Layanan dieksekusi. Untuk informasi selengkapnya tentang variabel Alur, lihat Referensi variabel.

Pemanggilan Layanan memiliki permintaan dan responsnya sendiri, dan Anda dapat mengakses data tersebut melalui variabel. Karena pesan utama menggunakan awalan variabel request.* dan response.*, gunakan awalan myrequest.* dan calloutResponse.* (default dalam konfigurasi Info Layanan) untuk mendapatkan data pesan yang khusus untuk Pemanggilan Layanan. Contoh pertama dalam tabel berikut menunjukkan cara mendapatkan header HTTP di Service Callout.

Variabel Deskripsi

Berikut adalah contoh cara mendapatkan header respons dan permintaan Pemanggilan Layanan serupa dengan cara Anda mendapatkan header dari permintaan dan respons utama.

calloutResponse.header.HeaderName

myRequest.header.HeaderName

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

calloutResponse.header.Content-Length

mengembalikan header Panjang Konten dari respons Info Layanan.

Cakupan: Dari penerusan Info Layanan
Jenis: String
Izin: Baca/Tulis

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

servicecallout.requesturi

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

URI TargetEndpoint untuk kebijakan ServiceCallout. URI adalah URL TargetEndpoint tanpa protokol dan spesifikasi domain.

servicecallout.{policy-name}.target.url

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

URL target untuk Info Layanan.

calloutResponse.content

dengan calloutResponse adalah nama variabel <Response> dalam konfigurasi Service Callout.

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

Isi respons dari Pemanggilan Layanan.

servicecallout.{policy-name}.expectedcn

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

Nama Umum TargetEndpoint yang diharapkan sebagaimana dirujuk dalam kebijakan ServiceCallout. Ini hanya berguna jika TargetEndpoint merujuk ke endpoint TLS/SSL.

servicecallout.{policy-name}.failed

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

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

Error

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

Error runtime

Error ini dapat terjadi saat kebijakan dieksekusi.

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

Error ini dapat terjadi jika:

  • kebijakan akan diminta untuk menangani input yang salah format atau tidak valid.
  • layanan target backend mengembalikan status kesalahan (secara {i>default, 4xx atau 5xx).
steps.servicecallout.RequestVariableNotMessageType 500 Variabel Permintaan yang ditentukan dalam kebijakan bukan jenis Pesan. Misalnya, jika ini adalah string atau jenis non-pesan lainnya, Anda akan melihat error ini.
steps.servicecallout.RequestVariableNotRequestMessageType 500 Variabel Permintaan yang ditentukan dalam kebijakan bukan jenis Pesan Permintaan. Misalnya, jika ini adalah 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 elemen <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 Dari 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