Tulis Ulang Plugin

Menulis ulang permintaan.

Cuplikan layar prompt perintah dengan Dev Proxy menulis ulang permintaan API masuk.

Contoh konfigurasi

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/rc.schema.json",
  "plugins": [
    {
      "name": "RewritePlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
      "configSection": "rewritePlugin"
    }
  ],
  "rewritePlugin": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/rewriteplugin.schema.json",
    "rewritesFile": "rewrites.json"
  }
}

Properti konfigurasi

Properti Deskripsi Bawaan
rewritesFile Jalur ke file yang berisi definisi penulisan ulang rewrites.json

Opsi baris Perintah

Tidak

Contoh refrite file

Berikut ini adalah contoh aturan penulisan ulang.

Menulis ulang semua permintaan dari HTTP ke HTTPS

Tulis ulang semua permintaan dari HTTP ke HTTPS. Dalam konteks ini, semua berarti semua permintaan yang dikonfigurasi dengan Dev Proxy atau RewritePlugin.

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/rewriteplugin.rewritesfile.schema.json",
  "rewrites": [
    {
      "in": {
        "url": "^http://(.*)"
      },
      "out": {
        "url": "https://$1"
      }
    }
  ]
}

Mengatur header permintaan

Atur Accept-Language header pada semua permintaan ke https://api.contoso.com. Jika permintaan sudah memiliki header, plugin akan menggantikan nilainya. Jika header hilang, plugin akan menambahkannya. Karena aturan tidak menentukan URL keluar , plugin tidak mengubah URL permintaan.

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/rewriteplugin.rewritesfile.schema.json",
  "rewrites": [
    {
      "in": {
        "url": "^https://api\\.contoso\\.com/"
      },
      "out": {
        "headers": [
          {
            "name": "Accept-Language",
            "value": "nl-NL"
          }
        ]
      }
    }
  ]
}

Menulis ulang permintaan ke URL dari variabel lingkungan

Tulis ulang permintaan ke https://api.contoso.com URL dasar yang disimpan dalam API_BASE_URL variabel lingkungan, mempertahankan sisa jalur.

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/rewriteplugin.rewritesfile.schema.json",
  "rewrites": [
    {
      "in": {
        "url": "^https://api\\.contoso\\.com/(.*)"
      },
      "out": {
        "url": "${env:API_BASE_URL}/$1"
      }
    }
  ]
}

Properti file tiruan

Properti Deskripsi Wajib diisi
rewrites Array objek penulisan ulang yang menentukan daftar aturan penulisan ulang yang diterapkan RewritePlugin untuk permintaan yang disadapnya Ya

Menulis ulang objek

Setiap aturan penulisan ulang memiliki properti berikut:

Properti Deskripsi Wajib diisi
in Tulis ulang pola agar sesuai dengan permintaan masuk. Ya
out Menulis ulang pola untuk menulis ulang permintaan Ya

Keterangan

Jika permintaan yang disadap RewritePlugin, tidak cocok dengan semua properti yang ditentukan dalam pola, plugin tidak menerapkan aturan penulisan ulang ke permintaan.

Pola penulisan ulang

Setiap pola penulisan ulang memiliki properti berikut:

Properti Deskripsi Wajib diisi Nilai default Sampel nilai
url Dalam pola , ekspresi reguler yang diterapkan plugin ke URL. Dalam pola keluar , URL untuk menulis ulang permintaan. Jika Anda menghilangkannya dalam pola keluar , plugin tidak mengubah URL permintaan. Ya di dalam, tidak masuk ^http://(.*)
headers Array header permintaan untuk diatur pada permintaan. Hanya didukung dalam pola keluar . no

Keterangan

Pola keluar harus menentukan url, headers, atau keduanya.

Jika Anda menggunakan grup pengambilan dalam ekspresi reguler dalam pola, Anda dapat merujuknya dalam pola keluar. Misalnya, jika Anda ingin menulis http://example.com/foo ulang ke https://example.com/foo, Anda bisa menggunakan aturan penulisan ulang berikut:

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/rewriteplugin.rewritesfile.schema.json",
  "rewrites": [
    {
      "in": {
        "url": "^http://(.*)"
      },
      "out": {
        "url": "https://$1"
      }
    }
  ]
}

Di URL keluar, Anda dapat mereferensikan variabel lingkungan menggunakan sintaks.${env:VAR_NAME} Dev Proxy menyisipkan nilai variabel lingkungan as-is, sehingga nilai juga dapat merujuk ke grup pengambilan dari dalam pola. Dev Proxy menyelesaikan variabel lingkungan hanya untuk permintaan yang cocok dengan pola dalam dan tidak memperluas variabel lingkungan dalam pola. Jika variabel lingkungan yang direferensikan tidak diatur, Dev Proxy mencatat kesalahan dan melewati aturan penulisan ulang.

Header permintaan

Setiap header permintaan memiliki properti berikut:

Properti Deskripsi Wajib diisi
name Nama header permintaan Ya
value Nilai yang akan diatur untuk header permintaan Ya

Keterangan

Plugin cocok dengan nama header secara tidak sensitif huruf besar/kecil. Jika permintaan sudah memiliki header, plugin akan menggantikan nilainya. Jika header hilang, plugin akan menambahkannya.

Plugin mengatur header hanya pada permintaan yang URL-nya cocok dengan pola URL . Plugin mengevaluasi kecocokan sebelum menerapkan penulisan ulang URL dari aturan yang sama, jadi ketika aturan menulis ulang URL dan header, header berlaku untuk permintaan yang sama dengan penulisan ulang URL.

Anda dapat mereferensikan variabel lingkungan dalam nilai header menggunakan ${env:VAR_NAME} sintaks. Dev Proxy menyelesaikannya dengan cara yang sama seperti di URL keluar , dan melewati aturan penulisan ulang jika variabel lingkungan yang direferensikan tidak diatur. Nilai header tidak mendukung grup pengambilan dari dalam pola.