Kebijakan ServiceCallout

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

Apa

Kebijakan Panggilan Layanan memungkinkan Anda memanggil layanan lain dari alur proxy API. Anda dapat melakukan panggilan 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 panggilan ke API pihak ketiga yang eksternal ke proxy Anda. Respons dari API pihak ketiga diuraikan dan dimasukkan dalam pesan respons API Anda, memperkaya dan "menggabungkan" data untuk pengguna akhir aplikasi. Anda juga dapat membuat permintaan menggunakan kebijakan Panggilan Layanan dalam alur permintaan, lalu meneruskan informasi dalam respons ke TargetEndpoint proxy API.
  • Dalam kasus penggunaan lain, Anda memanggil proxy yang berada di organisasi dan lingkungan yang sama dengan proxy yang Anda panggil. Misalnya, Anda mungkin merasa ini berguna saat memiliki proxy yang menawarkan beberapa fungsi tingkat rendah diskrit yang akan digunakan oleh satu atau beberapa proxy lainnya. 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 panggilan ke proxy API lokal (yaitu, yang berada di organisasi dan lingkungan yang sama) yang disebut data-manager, dengan menentukan endpoint proxy 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 URL dan untuk bagian URL lainnya.

Permintaan geocoding / penentuan 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

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

Berikut adalah contoh lain saat permintaan dibuat sebelum mencapai kebijakan Panggilan 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 bernama GeocodingRequest (yang dapat diisi, misalnya, oleh kebijakan AssignMessage). Pesan respons ditetapkan ke variabel yang disebut GeocodingResponse, yang dapat diuraikan oleh kebijakan Ekstrak Variabel atau oleh kode kustom yang ditulis dalam JavaScript atau Java. Kebijakan menunggu 30 detik untuk mendapatkan respons dari Google Geocoding API sebelum waktunya habis.

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

Memanggil server target

<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 ke 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 Service Callout

Ada banyak skenario saat Anda dapat menggunakan kebijakan Panggilan Layanan 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.

Pesan singkat biasanya digunakan dengan dua kebijakan lainnya: Tetapkan Pesan dan Ekstrak Variabel.

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

Komposisi kebijakan Service Callout yang umum meliputi:

  1. Kebijakan Tetapkan Pesan: Membuat pesan permintaan, mengisi header HTTP, parameter kueri, menetapkan kata kerja HTTP, dll.
  2. Kebijakan Panggilan Layanan: Merujuk ke 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 Panggilan Layanan dalam cache, seperti yang dijelaskan dalam rangkaian pesan Komunitas Apigee ini: How can I store the results of the ServiceCallout policy in cache and later retrieve it from cache?.
  3. Ekstrak Variabel policy: Biasanya menentukan ekspresi JSONPath atau XPath yang mengurai pesan yang dihasilkan oleh Panggilan Layanan. Kemudian, kebijakan menetapkan variabel yang berisi nilai yang diuraikan dari respons Panggilan Layanan.

Lihat Menggunakan komposisi kebijakan untuk mengetahui contoh lengkap proxy API yang menggunakan kebijakan Panggilan Layanan bersama dengan kebijakan Tetapkan Pesan dan Ekstrak Variabel.

Penanganan error kustom

Referensi elemen

Berikut adalah elemen dan atribut yang dapat Anda konfigurasi pada 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 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

Elemen <Request>

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

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

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

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

Atau, Anda dapat mengisi pesan permintaan yang dikirim ke layanan eksternal dalam kebijakan Service Callout 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 nilai default 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 dan ditetapkan ke permintaan jika Anda tidak memberikan nama.

Nama default ini penting untuk diketahui jika Anda menggunakan penyamaran data -- jika Anda tidak menyertakan nama variabel, Anda harus menambahkan servicecallout.request ke konfigurasi penyamaran. Misalnya, jika Anda ingin memasking header Otorisasi agar tidak muncul di sesi Perekaman Aktivitas, Anda akan menambahkan kode berikut ke konfigurasi masking untuk merekam 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.

Setel opsi clearPayload ke salah (false) hanya jika pesan permintaan diperlukan setelah Panggilan Layanan dieksekusi.

true Opsional

Elemen <Request>/<IgnoreUnresolvedVariables>

Jika disetel 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 jika logika proxy API memerlukan respons dari panggilan jarak jauh untuk pemrosesan lebih lanjut.

Jika ada, elemen ini 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 tidak ada, proxy API tidak menunggu respons; eksekusi alur Proxy API berlanjut dengan langkah-langkah alur berikutnya. Selain itu, tanpa elemen Response, respons dari target tidak tersedia untuk diproses oleh langkah-langkah berikutnya, 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

Elemen <Timeout>

Waktu dalam milidetik yang akan digunakan kebijakan Service Callout untuk menunggu respons dari target. Anda tidak dapat menetapkan nilai ini secara dinamis saat runtime. Jika Panggilan Layanan mengalami waktu tunggu habis, HTTP 500 akan ditampilkan, kebijakan gagal, dan proxy API akan memasuki status 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 URL, TLS/SSL, dan properti 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 sebagian 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" 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

Elemen <HTTPTargetConnection>/<Properties>

Properti transportasi 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 di server tersebut. Lihat contoh Panggil server target di bagian Contoh. Lihat juga Load balancing di seluruh server backend. Lihat juga postingan komunitas ini yang membahas cara memanggil server target dari kebijakan Panggilan 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 dalam organisasi dan lingkungan yang sama -- sebagai target panggilan 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 menjadi target panggilan lokal. Proxy harus berada di 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 harus menjadi target panggilan. Ini adalah endpoint proxy di proxy API yang ditentukan 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 menjadi target. Endpoint harus merujuk ke proxy di organisasi dan lingkungan yang sama dengan proxy yang melakukan panggilan.

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

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

Skema

Variabel alur

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

Panggilan 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 khusus untuk Info Layanan. Contoh pertama dalam tabel berikut menunjukkan cara mendapatkan header HTTP di Panggilan Layanan.

Variabel Deskripsi

Berikut adalah contoh cara mendapatkan header permintaan dan respons Panggilan Layanan yang 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 Panggilan Layanan, dan myRequest adalah nama variabel untuk Permintaan. Contoh:

calloutResponse.header.Content-Length

menampilkan header Content-Length respons Panggilan Layanan.

Cakupan: Dari Panggilan Layanan ke depan
Jenis: String
Izin: Baca/Tulis

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

servicecallout.requesturi

Cakupan: Dari permintaan Panggilan Layanan ke depan
Jenis: String
Izin: Baca/Tulis

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

servicecallout.{policy-name}.target.url

Cakupan: Dari permintaan Panggilan Layanan ke depan
Jenis: String
Izin: Baca/Tulis

URL target untuk Info Layanan.

calloutResponse.content

dengan calloutResponse adalah nama variabel <Response> dalam konfigurasi Panggilan Layanan.

Cakupan: Dari respons Panggilan Layanan ke depan
Jenis: String
Izin: Baca/Tulis

Isi respons dari Panggilan Layanan.

servicecallout.{policy-name}.expectedcn

Cakupan: Dari permintaan Panggilan Layanan ke depan
Jenis: String
Izin: Baca/Tulis

Nama Umum TargetEndpoint yang diharapkan sebagaimana dirujuk dalam kebijakan ServiceCallout. Nilai ini hanya bermakna jika TargetEndpoint merujuk ke endpoint TLS/SSL.

servicecallout.{policy-name}.failed

Cakupan: Dari respons Panggilan Layanan ke depan
Jenis: Boolean
Izin: Baca/Tulis

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

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