Kirim permintaan
BERLAKU UNTUK: Semua tingkatAN API Management
Kebijakan send-request
mengirimkan permintaan yang diberikan ke URL yang ditentukan, menunggu tidak lebih dari nilai waktu tunggu yang ditetapkan.
Catatan
Tetapkan elemen kebijakan dan elemen turunan dalam urutan yang disediakan dalam pernyataan kebijakan. Pelajari lebih lanjut cara mengatur atau mengedit kebijakan API Management.
Pernyataan kebijakan
<send-request mode="new | copy" response-variable-name="" timeout="60 sec" ignore-error
="false | true">
<set-url>request URL</set-url>
<set-method>...</set-method>
<set-header>...</set-header>
<set-body>...</set-body>
<authentication-certificate thumbprint="thumbprint" />
<proxy>...</proxy>
</send-request>
Atribut
Atribut | Deskripsi | Wajib diisi | Default |
---|---|---|---|
mode | Menentukan apakah ini adalah new permintaan atau copy header dan isi dalam permintaan saat ini. Di bagian kebijakan keluar, mode=copy tidak menginisialisasi isi permintaan. Ekspresi kebijakan diizinkan. |
No | new |
respons-variabel-nama | Nama variabel konteks yang akan menerima objek respons. Jika variabel tidak ada, variabel akan dibuat setelah eksekusi kebijakan berhasil dan akan dapat diakses melalui kumpulan context.Variable . Ekspresi kebijakan diizinkan. |
Ya | T/A |
waktu habis | Interval waktu habis dalam hitungan detik sebelum panggilan ke URL gagal. Ekspresi kebijakan diizinkan. | No | 60 |
ignore-error | Jika true dan permintaan menghasilkan kesalahan, kesalahan akan diabaikan, dan variabel respons akan berisi nilai null. Ekspresi kebijakan tidak diizinkan. |
No | false |
Elemen
Elemen | Deskripsi | Wajib diisi |
---|---|---|
set-url | URL permintaan. Ekspresi kebijakan diizinkan. | Tidak jika mode=copy ; sebaliknya ya. |
atur-metode | Mengatur metode permintaan. Ekspresi kebijakan tidak diizinkan. | Tidak jika mode=copy ; sebaliknya ya. |
atur-judul | Mengatur header dalam permintaan. Gunakan beberapa set-header elemen untuk beberapa header permintaan. |
No |
set-body | Mengatur isi permintaan. | No |
authentication-certificate | Sertifikat yang digunakan untuk autentikasi klien, ditentukan dalam thumbprint atribut. |
No |
proksi | Merutekan permintaan melalui proksi HTTP. | No |
Penggunaan
- Bagian kebijakan: masuk, keluar, backend, saat terjadi kesalahan
- Cakupan kebijakan: global, ruang kerja, produk, API, operasi
- Gateway: khusus, konsumsi, dihost sendiri, ruang kerja
Catatan penggunaan
Jika instans API Management Anda disebarkan (disuntikkan) dalam VNet dalam mode internal dan Anda menggunakan kebijakan ini untuk mengirim permintaan API ke API yang diekspos dalam instans API Management yang sama, Anda mungkin mengalami batas waktu dengan kesalahan HTTP 500 BackendConnectionFailure. Ini adalah hasil dari batasan Azure Load Balancer.
Untuk menautkan permintaan API ke gateway dalam skenario ini, konfigurasikan set-url
untuk menggunakan URL https://127.0.0.1
loopback localhost . Selain itu, atur HOST
header untuk menentukan host gateway instans API Management ini. Anda dapat menggunakan default azure-api.net
atau host domain kustom Anda. Contohnya:
<send-request>
<set-url>https://127.0.0.1/myapi/myoperation</set-url>
<set-header name="Host">
<value>myapim.azure-api.net</value>
</set-header>
</send-request>
Untuk informasi selengkapnya, lihat posting blog ini.
Contoh
Contoh ini menunjukkan satu cara untuk memverifikasi token referensi dengan server otorisasi. Untuk informasi selengkapnya tentang sampel ini, lihat Menggunakan layanan eksternal dari layanan Azure API Management.
<inbound>
<!-- Extract token from Authorization header parameter -->
<set-variable name="token" value="@(context.Request.Headers.GetValueOrDefault("Authorization","scheme param").Split(' ').Last())" />
<!-- Send request to Token Server to validate token (see RFC 7662) -->
<send-request mode="new" response-variable-name="tokenstate" timeout="20" ignore-error="true">
<set-url>https://microsoft-apiappec990ad4c76641c6aea22f566efc5a4e.azurewebsites.net/introspection</set-url>
<set-method>POST</set-method>
<set-header name="Authorization" exists-action="override">
<value>basic dXNlcm5hbWU6cGFzc3dvcmQ=</value>
</set-header>
<set-header name="Content-Type" exists-action="override">
<value>application/x-www-form-urlencoded</value>
</set-header>
<set-body>@($"token={(string)context.Variables["token"]}")</set-body>
</send-request>
<choose>
<!-- Check active property in response -->
<when condition="@((bool)((IResponse)context.Variables["tokenstate"]).Body.As<JObject>()["active"] == false)">
<!-- Return 401 Unauthorized with http-problem payload -->
<return-response>
<set-status code="401" reason="Unauthorized" />
<set-header name="WWW-Authenticate" exists-action="override">
<value>Bearer error="invalid_token"</value>
</set-header>
</return-response>
</when>
</choose>
<base />
</inbound>
Kebijakan terkait
Konten terkait
Untuk informasi selengkapnya tentang bekerja dengan kebijakan, lihat:
- Tutorial: Mengubah dan melindungi API Anda
- Referensi Kebijakan untuk daftar lengkap pernyataan kebijakan dan pengaturannya
- Ekspresi kebijakan
- Mengatur atau mengedit kebijakan
- Menggunakan kembali konfigurasi kebijakan
- Repositori cuplikan kebijakan
- Kebijakan penulis menggunakan Microsoft Copilot di Azure