Halaman ini berlaku untuk Apigee dan Apigee Hybrid.
Lihat dokumentasi
Apigee Edge.
Tentang kebijakan OASValidation
Kebijakan OASValidation (Validasi Spesifikasi OpenAPI) memungkinkan Anda memvalidasi permintaan atau pesan respons yang masuk terhadap Spesifikasi 3.0 OpenAPI, menggunakan format JSON atau YAML. Lihat Konten apa yang divalidasi?
Kebijakan OASValidation menentukan nama Spesifikasi OpenAPI yang akan digunakan untuk validasi saat langkah yang terkait dengan kebijakan dijalankan.
Spesifikasi OpenAPI disimpan sebagai resource di lokasi standar berikut dalam paket proxy API: apiproxy/resources/oas
.
Dokumen Spesifikasi OpenAPI harus memiliki ekstensi .json
, .yml
, atau .yaml
.
Tambahkan Spesifikasi OpenAPI sebagai resource ke paket proxy API menggunakan UI atau API, seperti yang dijelaskan dalam Mengelola resource.
Kebijakan ini adalah kebijakan Standar dan dapat di-deploy ke jenis lingkungan apa pun. Untuk mengetahui informasi tentang jenis dan ketersediaan kebijakan dengan setiap jenis lingkungan, lihat Jenis kebijakan.
Konten apa yang divalidasi?
Tabel berikut merangkum konten pesan permintaan yang divalidasi oleh kebijakan OASValidation, menurut komponen.
Komponen | Minta validasi |
---|---|
Basepath | Memvalidasi basepath yang ditentukan oleh proxy API; mengabaikan basepath yang ditentukan dalam Spesifikasi OpenAPI. |
Jalur | Memvalidasi bahwa jalur permintaan (tanpa basepath) cocok dengan salah satu pola jalur yang ditentukan dalam Spesifikasi OpenAPI. |
Kata kerja | Memvalidasi bahwa kata kerja ditentukan untuk jalur dalam Spesifikasi OpenAPI. |
Isi pesan permintaan |
Catatan: Kebijakan ini memvalidasi isi pesan permintaan terhadap Spesifikasi OpenAPI hanya jika Content-Type disetel ke
|
Parameter |
|
Tabel berikut merangkum konten pesan respons yang divalidasi oleh kebijakan OASValidation, menurut komponen.
Komponen | Validasi respons |
---|---|
Jalur | Memvalidasi bahwa jalur permintaan (tanpa basepath) cocok dengan salah satu pola jalur yang ditentukan dalam Spesifikasi OpenAPI. |
Kata kerja | Memvalidasi bahwa kata kerja ditentukan untuk jalur dalam Spesifikasi OpenAPI. |
Isi pesan respons |
|
Sampel
Contoh berikut menunjukkan beberapa cara Anda dapat menggunakan kebijakan OASValidation untuk memvalidasi pesan terhadap Spesifikasi OpenAPI 3.0.
Memvalidasi pesan permintaan
Dalam contoh berikut, kebijakan myoaspolicy
memvalidasi isi pesan permintaan terhadap
skema isi pesan permintaan operasi yang ditentukan dalam Spesifikasi OpenAPI my-spec.json
.
<OASValidation name="myoaspolicy"> <OASResource>oas://my-spec.json</OASResource> <Options> <ValidateMessageBody>true</ValidateMessageBody> </Options> <Source>request</Source> </OASValidation>
Jika isi pesan tidak sesuai dengan Spesifikasi OpenAPI, error policies.oasvalidation.Failed
akan ditampilkan.
Memvalidasi parameter
Contoh berikut mengonfigurasi kebijakan agar gagal jika parameter header, kueri, atau cookie ditentukan dalam permintaan yang tidak ditentukan dalam Spesifikasi OpenAPI.
<OASValidation name="myoaspolicy"> <OASResource>oas://my-spec.yaml</OASResource> <Options> <AllowUnspecifiedParameters> <Header>false</Header> <Query>false</Query> <Cookie>false</Cookie> </AllowUnspecifiedParameters> </Options> </OASValidation>
Elemen <OASValidation>
Menentukan kebijakan Validasi Spesifikasi OpenAPI.
Nilai Default | Lihat tab Kebijakan Default di bawah |
Wajib? | Wajib |
Jenis | Objek kompleks |
Elemen Induk | t/a |
Elemen Turunan |
<DisplayName> <OASResource> <Source> <Options> <Source> |
Sintaks
Elemen <OASValidation>
menggunakan sintaksis berikut:
<OASValidation continueOnError="[true|false]" enabled="[true|false]" name="policy_name" > <!-- All OASValidation child elements are optional except OASResource --> <DisplayName>policy_display_name</DisplayName> <OASResource>validation_JSON_or_YAML</OASResource> <Options> <ValidateMessageBody>[true|false]</ValidateMessageBody> <AllowUnspecifiedParameters> <Header>[true|false]</Header> <Query>[true|false]</Query> <Cookie>[true|false]</Cookie> </AllowUnspecifiedParameters> </Options> <Source>message_to_validate</Source> </OASValidation>
Kebijakan Default
Contoh berikut menunjukkan setelan default saat Anda menambahkan kebijakan Validasi OAS ke alur di UI Apigee:
<OASValidation continueOnError="false" enabled="true" name="OpenAPI-Spec-Validation-1"> <DisplayName>OpenAPI Spec Validation-1</DisplayName> <Properties/> <Source>request</Source> <OASResource>oas://OpenAPI-Spec-Validation-1.yaml</OASResource> </OASValidation>
Elemen ini memiliki atribut berikut yang umum untuk semua kebijakan:
Atribut | Default | Wajib? | Deskripsi |
---|---|---|---|
name |
T/A | Wajib |
Nama internal kebijakan. Nilai atribut Secara opsional, gunakan elemen |
continueOnError |
false | Opsional | Tetapkan ke false untuk menampilkan error saat kebijakan gagal. Perilaku ini wajar terjadi untuk
sebagian besar kebijakan. Tetapkan ke true agar eksekusi alur berlanjut meskipun setelah kebijakan gagal. Lihat juga:
|
enabled |
benar | Opsional | Tetapkan ke true untuk menerapkan kebijakan. Tetapkan ke false untuk menonaktifkan
kebijakan. Kebijakan tidak akan diterapkan meskipun tetap terlampir ke alur. |
async |
false | Tidak digunakan lagi | Atribut ini tidak digunakan lagi. |
Referensi elemen turunan
Bagian ini menjelaskan elemen turunan <OASValidation>
.
<DisplayName>
Gunakan selain atribut name
untuk memberi label pada kebijakan di editor proxy UI pengelolaan dengan nama yang berbeda dan lebih terdengar alami.
Elemen <DisplayName>
umum untuk semua kebijakan.
Nilai Default | T/A |
Wajib? | Opsional. Jika Anda menghilangkan <DisplayName> , nilai atribut name kebijakan akan digunakan. |
Jenis | String |
Elemen Induk | <PolicyElement> |
Elemen Turunan | Tidak ada |
Elemen <DisplayName>
menggunakan sintaksis berikut:
Sintaks
<PolicyElement> <DisplayName>POLICY_DISPLAY_NAME</DisplayName> ... </PolicyElement>
Contoh
<PolicyElement> <DisplayName>My Validation Policy</DisplayName> </PolicyElement>
Elemen <DisplayName>
tidak memiliki atribut atau elemen turunan.
<OASResource>
Menentukan Spesifikasi OpenAPI yang akan divalidasi. Anda dapat menyimpan file ini:
- Di cakupan proxy API di bagian
/apiproxy/resources/oas
dalam paket proxy API - Di bagian
Resources
pada tampilan Navigator editor proxy API.
Untuk mengetahui informasi selengkapnya, lihat Mengelola fasilitas.
Anda dapat menentukan Spesifikasi OpenAPI menggunakan template pesan, seperti {oas.resource.url}
.
Dalam hal ini, nilai variabel alur oas.resource.url
(dalam tanda kurung kurawal) akan dievaluasi
dan diganti ke dalam string payload saat runtime.
Untuk mengetahui informasi selengkapnya, lihat Template pesan.
Nilai Default | Tidak ada |
Wajib? | Wajib |
Jenis | String |
Elemen Induk |
<OASValidation>
|
Elemen Turunan | Tidak ada |
Sintaks
Elemen <OASResource>
menggunakan sintaksis berikut:
<OASValidation name="policy_name"> <OASResource>oas://specname[.json|.yaml|.yml]</OASResource> ... </OASValidation>
Contoh
Contoh berikut mereferensikan spesifikasi my-spec.yaml
yang disimpan di /apiproxy/resources/oas
dalam paket proxy API:
<OASValidation name="myoaspolicy"> <OASResource>oas://my-spec.yaml</OASResource> </OASValidation>
Elemen <OASResource>
tidak memiliki atribut atau elemen turunan.
<Options>
Mengonfigurasi opsi untuk kebijakan.
Nilai Default | t/a |
Wajib? | Opsional |
Jenis | Jenis kompleks |
Elemen Induk |
<OASValidation>
|
Elemen Turunan |
<ValidateMessageBody> <AllowUnspecifiedParameters> |
Sintaks
Elemen <Options>
menggunakan sintaksis berikut:
<OASValidation name="policy_name"> <OASResource>oas://specname[.json|.yaml|.yml]</OASResource> <Options> <ValidateMessageBody>[true|false]</ValidateMessageBody> <AllowUnspecifiedParameters> <Header>[true|false]</Header> <Query>[true|false]</Query> <Cookie>[true|false]</Cookie> </AllowUnspecifiedParameters> </Options> ... </OASValidation>
Contoh
Contoh berikut mengonfigurasi opsi untuk kebijakan. Setiap opsi dijelaskan lebih mendetail di bawah.
<OASValidation name="myoaspolicy"> <OASResource>oas://my-spec.yaml</OASResource> <Options> <ValidateMessageBody>false</ValidateMessageBody> <AllowUnspecifiedParameters> <Header>false</Header> <Query>false</Query> <Cookie>false</Cookie> </AllowUnspecifiedParameters> </Options> </OASValidation>
<ValidateMessageBody>
Menentukan apakah kebijakan harus memvalidasi isi pesan terhadap skema isi permintaan operasi dalam Spesifikasi OpenAPI. Tetapkan ke true untuk memvalidasi isi pesan. Disetel ke false untuk memvalidasi hanya apakah isi pesan ada.
Anda dapat mengontrol apakah eksekusi alur berlanjut setelah terjadi error validasi dengan menetapkan atribut continueOnError
untuk elemen <OASValidation>
ke true.
Nilai Default | false |
Wajib? | Opsional |
Jenis | Boolean |
Elemen Induk |
<Options>
|
Elemen Turunan | Tidak ada |
Sintaks
Elemen <ValidateMessageBody>
menggunakan sintaksis berikut:
<OASValidation name="policy_name"> <OASResource>oas://specname[.json|.yaml|.yml]</OASResource> <Options> <ValidateMessageBody>[true|false]</ValidateMessageBody> </Options> ... </OASValidation>
Contoh
Contoh berikut mengaktifkan validasi konten isi pesan:
<OASValidation name="myoaspolicy"> <OASResource>oas://my-spec.yaml</OASResource> <Options> <ValidateMessageBody>true</ValidateMessageBody> </Options> </OASValidation>
<AllowUnspecifiedParameters>
Mengonfigurasi perilaku kebijakan jika ada parameter header, kueri, atau cookie dalam permintaan yang tidak ditentukan dalam Spesifikasi OpenAPI.
Nilai Default | t/a |
Wajib? | Opsional |
Jenis | Jenis kompleks |
Elemen Induk |
<Options>
|
Elemen Turunan |
<Header> <Query> <Cookie> |
Sintaks
Elemen <AllowUnspecifiedParameters>
menggunakan sintaksis berikut:
<OASValidation name="policy_name"> <OASResource>oas://specname[.json|.yaml|.yml]</OASResource> <Options> <AllowUnspecifiedParameters> <Header>[true|false]</Header> <Query>[true|false]</Query> <Cookie>[true|false]</Cookie> </AllowUnspecifiedParameters> </Options> ... </OASValidation>
Contoh
Contoh berikut mengonfigurasi kebijakan agar gagal jika parameter header, kueri, atau cookie ditentukan dalam permintaan yang tidak ditentukan dalam Spesifikasi OpenAPI.
<OASValidation name="myoaspolicy"> <OASResource>oas://my-spec.yaml</OASResource> <Options> <AllowUnspecifiedParameters> <Header>false</Header> <Query>false</Query> <Cookie>false</Cookie> </AllowUnspecifiedParameters> </Options> </OASValidation>
<Header>
(turunan dari <AllowUnspecifiedParameters>
)
Mengonfigurasi perilaku kebijakan jika ada parameter header dalam permintaan yang tidak ditentukan dalam Spesifikasi OpenAPI.
Untuk mengizinkan parameter header ditentukan dalam permintaan yang tidak ditentukan dalam Spesifikasi OpenAPI, tetapkan parameter ini ke true. Jika tidak, tetapkan parameter ini ke false agar eksekusi kebijakan gagal.
Nilai Default | true |
Wajib? | Boolean |
Jenis | Jenis kompleks |
Elemen Induk |
<AllowUnspecifiedParameters>
|
Elemen Turunan | Tidak ada |
Sintaks
Elemen <Header>
menggunakan sintaksis berikut:
<OASValidation name="policy_name"> <OASResource>oas://specname[.json|.yaml|.yml]</OASResource> <Options> <AllowUnspecifiedParameters> <Header>[true|false]</Header> </AllowUnspecifiedParameters> </Options> ... </OASValidation>
Contoh
Contoh berikut mengonfigurasi kebijakan agar gagal jika parameter header ditentukan dalam permintaan yang tidak ditentukan dalam Spesifikasi OpenAPI.
<OASValidation name="myoaspolicy"> <OASResource>oas://my-spec.yaml</OASResource> <Options> <AllowUnspecifiedParameters> <Header>false</Header> </AllowUnspecifiedParameters> </Options> </OASValidation>
<Query>
(turunan dari <AllowUnspecifiedParameters>
)
Mengonfigurasi perilaku kebijakan jika ada parameter kueri dalam permintaan yang tidak ditentukan dalam Spesifikasi OpenAPI.
Untuk mengizinkan parameter kueri ditentukan dalam permintaan yang tidak ditentukan dalam Spesifikasi OpenAPI, tetapkan parameter ini ke true. Jika tidak, tetapkan parameter ini ke false agar eksekusi kebijakan gagal.
Nilai Default | true |
Wajib? | Boolean |
Jenis | Jenis kompleks |
Elemen Induk |
<AllowUnspecifiedParameters>
|
Elemen Turunan | Tidak ada |
Sintaks
Elemen <Query>
menggunakan sintaksis berikut:
<OASValidation name="policy_name"> <OASResource>oas://specname[.json|.yaml|.yml]</OASResource> <Options> <AllowUnspecifiedParameters> <Query>[true|false]</Query> </AllowUnspecifiedParameters> </Options> ... </OASValidation>
Contoh
Contoh berikut mengonfigurasi kebijakan agar gagal jika parameter kueri ditentukan dalam permintaan yang tidak ditentukan dalam Spesifikasi OpenAPI.
<OASValidation name="myoaspolicy"> <OASResource>oas://my-spec.yaml</OASResource> <Options> <AllowUnspecifiedParameters> <Query>false</Query> </AllowUnspecifiedParameters> </Options> </OASValidation>
Mengonfigurasi perilaku kebijakan jika ada parameter cookie dalam permintaan yang tidak ditentukan dalam Spesifikasi OpenAPI.
Untuk mengizinkan parameter cookie ditentukan dalam permintaan yang tidak ditentukan dalam Spesifikasi OpenAPI, tetapkan parameter ini ke true. Jika tidak, tetapkan parameter ini ke false agar eksekusi kebijakan gagal.
Nilai Default | true |
Wajib? | Boolean |
Jenis | Jenis kompleks |
Elemen Induk |
<AllowUnspecifiedParameters>
|
Elemen Turunan | Tidak ada |
Sintaks
Elemen <Cookie>
menggunakan sintaksis berikut:
<OASValidation name="policy_name"> <OASResource>oas://specname[.json|.yaml|.yml]</OASResource> <Options> <AllowUnspecifiedParameters> <Query>[true|false]</Query> </AllowUnspecifiedParameters> </Options> ... </OASValidation>
Contoh
Contoh berikut mengonfigurasi kebijakan agar gagal jika parameter kueri ditentukan dalam permintaan yang tidak ditentukan dalam Spesifikasi OpenAPI.
<OASValidation name="myoaspolicy"> <OASResource>oas://my-spec.yaml</OASResource> <Options> <AllowUnspecifiedParameters> <Cookie>false</Cookie> </AllowUnspecifiedParameters> </Options> </OASValidation>
<Source>
Pesan JSON yang akan dievaluasi terhadap serangan payload JSON. Setelan ini biasanya ditetapkan ke
request
, karena Anda biasanya perlu mengevaluasi permintaan masuk dari aplikasi klien.
Setel ke response untuk mengevaluasi pesan respons.
Disetel ke message untuk mengevaluasi pesan permintaan secara otomatis
saat kebijakan dilampirkan ke alur permintaan dan pesan respons saat kebijakan dilampirkan ke alur
respons.
Nilai Default | permintaan |
Wajib? | Opsional |
Jenis | String |
Elemen Induk |
<Source>
|
Elemen Turunan | Tidak ada |
Sintaks
Elemen <Source>
menggunakan sintaksis berikut:
<OASValidation name="policy_name"> <OASResource>oas://specname[.json|.yaml|.yml]</OASResource> <Source>[message|request|response]</Source> ... </OASValidation>
Contoh
Contoh berikut mengevaluasi pesan permintaan secara otomatis saat kebijakan dilampirkan ke alur permintaan dan pesan respons saat kebijakan dilampirkan ke alur respons:
<OASValidation name="myoaspolicy"> <OASResource>oas://my-spec.yaml</OASResource> <Source>message</Source> </OASValidation>
Elemen <Source>
tidak memiliki atribut atau elemen turunan.
Skema untuk kebijakan ini
Setiap jenis kebijakan ditentukan oleh skema XML (.xsd
). Sebagai referensi, skema kebijakan
tersedia di GitHub.
Kode error
Bagian ini menjelaskan kode error dan pesan error yang ditampilkan serta variabel error yang ditetapkan oleh Apigee saat kebijakan ini memicu error. Informasi ini penting untuk diketahui jika Anda mengembangkan aturan error untuk menangani error. Untuk mempelajari lebih lanjut, lihat Yang perlu Anda ketahui tentang error kebijakan dan Menangani error.
Error runtime
Error ini dapat terjadi saat kebijakan dijalankan.
Kode kerusakan | Status HTTP | Penyebab |
---|---|---|
steps.oasvalidation.Failed |
400 |
Isi pesan Permintaan tidak dapat divalidasi berdasarkan Spesifikasi OpenAPI yang diberikan. |
steps.oasvalidation.Failed |
500 |
Isi pesan Respons tidak dapat divalidasi berdasarkan Spesifikasi OpenAPI yang diberikan. |
steps.oasvalidation.SourceMessageNotAvailable |
500 |
Variabel yang ditentukan dalam elemen |
steps.oasvalidation.NonMessageVariable |
500 |
Elemen |
Error saat deployment
Error ini dapat terjadi saat Anda men-deploy proxy yang berisi kebijakan ini.
Nama error | Penyebab | |
---|---|---|
ResourceDoesNotExist |
Spesifikasi OpenAPI yang dirujuk dalam elemen <OASResource> tidak ada.
|
|
ResourceCompileFailed |
Spesifikasi OpenAPI yang disertakan dalam deployment berisi error yang mencegahnya dikompilasi. Hal ini umumnya menunjukkan bahwa spesifikasi tersebut bukan Spesifikasi OpenAPI 3.0 yang terbentuk dengan baik. | |
BadResourceURL |
Spesifikasi OpenAPI yang dirujuk dalam elemen <OASResource> tidak dapat diproses. Hal ini dapat terjadi jika file bukan file JSON atau YAML atau URL file tidak ditentukan dengan benar.
|
Variabel error
Variabel ini ditetapkan saat kebijakan ini memicu error saat runtime. Untuk informasi selengkapnya, lihat Yang perlu Anda ketahui tentang error kebijakan.
Variabel | Deskripsi | Contoh |
---|---|---|
fault.category |
Kategori kesalahan. Jika kebijakan menolak permintaan, Step akan selalu disimpan. |
fault.category = "Step" |
fault.name |
Nama error, seperti yang tercantum dalam tabel Runtime errors di atas. Nama error adalah bagian terakhir dari kode error. | fault.name Matches "ResourceDoesNotExist" |
fault.reason |
Alasan terjadinya kesalahan. Ini adalah string yang dapat dibaca manusia yang menjelaskan alasan terjadinya error. | OASValidation OAS-1 with resource "oas://my-spec1.yaml": failed with reason: "[ERROR - POST operation not allowed on path '/persons/13'.: []]" |
fault.subcategory |
Subkategori kesalahan. Jika kebijakan menolak permintaan, OASValidationFailure akan selalu disimpan. |
fault.subcategory = "OASValidationFailure" |
OASValidation.policy_name.failed |
policy_name adalah nama kebijakan yang ditentukan pengguna yang menampilkan error. | OASValidation.myoaspolicy.failed = true |
Fitur Spesifikasi OpenAPI yang didukung
Kebijakan OASValidation mendukung fitur Spesifikasi OpenAPI yang diringkas dalam tabel berikut, menurut kategori. Fitur yang tidak didukung juga dicantumkan.
Kategori | Didukung | Tidak didukung |
---|---|---|
Format jenis data | boolean date date-time double float int32/int64 ipv4/ipv6 md5 sha1/sha256/sha512 string uri uri-template uuid |
biner byte sandi |
Objek diskriminator | mapping propertyName |
T/A |
Objek jenis media | schema | encoding contoh contoh |
Objek operasi | parameters requestBody responses security (dukungan sebagian) |
callback tidak digunakan lagi server |
Objek parameter | allowEmptyValue in ( query , header , path )required responses schema style ( deepObject , form , formmatrix , label , pipeDelimited , simple , spaceDelimited )Catatan: deepObject hanya mendukung parameter string; array dan objek bertingkat tidak didukung.
|
allowReserved tidak digunakan lagi contoh contoh konten |
Objek jalur | delete get head options parameters patch post put trace variables |
server |
Objek isi permintaan | application/json application/hal+json application/x-www-form-urlencoded (objek encoding tidak didukung)content required |
application/xml multipart/form-data text/plain text/xml |
Objek respons | application/json application/hal+json application/x-www-form-urlencoded (objek encoding tidak didukung)content headers |
application/xml links text/plain text/xml |
Objek respons | default Kode Status HTTP |
T/A |
Objek skema | $ref additionalProperties (hanya varian tanda boolean) allOf (diabaikan jika additionalProperties adalah false )anyOf enum exclusiveMaximum/exclusiveMinimum format items maximum/minimum maxItems/minItems maxLength/minLength maxProperties/minProperties multipleOf not nullable oneOf pattern properties required title type uniqueItems |
tidak digunakan lagi contoh hanyaBaca hanyaTulis xml |
Objek skema keamanan | in (header , query ) (diabaikan jika type adalah http )name type ( apiKey , http )
|
bearerFormat flows openIdConnectUrl scheme |
Objek server | url variables |
Beberapa definisi server |
Menggunakan pola dalam skema
Standar Spesifikasi OpenAPI memungkinkan spesifikasi menetapkan schema
untuk menjelaskan
jenis data parameter atau kolom. Untuk parameter atau kolom jenis string, skema juga dapat menentukan
pattern
, yang merupakan ekspresi reguler (regex) yang menentukan
bentuk yang valid untuk string.
Sebagai contoh, perhatikan fragmen Spesifikasi OpenAPI berikut:
paths: /products/{product-id}: get: operationId: getProduct summary: Get product by id description: returns information regarding a product, by id parameters: - name: product-id in: path description: id of the product required: true schema: type: string pattern: '^\w{3}-\d{4}$'
Spesifikasi ini mengharuskan untuk operasi getProduct
, parameter product-id
harus mematuhi
ekspresi reguler yang diberikan, yang menetapkan urutan 3 karakter kata, tanda hubung, dan 4 digit desimal.
Spesifikasi OpenAPI mengacu pada standar Validasi Skema JSON untuk secara formal menentukan perilaku pola dalam memvalidasi nilai string, dan pada standar Inti Skema JSON untuk rekomendasi kepada penulis skema terkait kumpulan sintaksis ekspresi reguler yang dibatasi. Standar tersebut merekomendasikan untuk menghindari penggunaan lookaround (lookahead dan lookbehind), backreference, dan ekspresi karakter oktal, di antara fitur lainnya, dalam pola di dalam dokumen Spesifikasi OpenAPI.
Secara default, Apigee memvalidasi dokumen Spesifikasi OpenAPI yang dirujuk oleh kebijakan OASValidation dan melaporkan error jika dokumen spesifikasi tidak dibuat dengan baik. Apigee juga memvalidasi pola regex dalam dokumen spesifikasi Anda dan melaporkan masalah yang ditemukan di sana.
Penting untuk diperhatikan bahwa jika Anda menggunakan fitur regex di luar subset yang direkomendasikan, Apigee tidak akan memvalidasi regex dan akan menangguhkan validasi tambahan apa pun pada dokumen Spesifikasi OpenAPI Anda. Jika ada error dalam dokumen, atau dalam regex yang menggunakan fitur di luar subset yang direkomendasikan, atau jika fitur regex tidak didukung oleh runtime Apigee, error hanya akan terdeteksi saat runtime ketika kebijakan dijalankan.
Tabel berikut memberikan beberapa contoh.
Pola | Perilaku |
---|---|
^\w{3}-\d{4}$ |
Pola valid. Hanya menggunakan fitur regex dalam subset yang direkomendasikan. Apigee akan mengizinkan penyimpanan atau impor proxy, dan saat runtime, kebijakan OASValidation akan berfungsi sebagaimana mestinya, memvalidasi parameter terhadap pola. |
^([a-z]\w{3}-\d{4}$ |
Pola tidak valid; tidak ada tanda kurung tutup. Pola tidak menggunakan fitur regex di luar subset yang direkomendasikan. Apigee akan melaporkan error ini saat Anda mengimpor atau menyimpan proxy API. |
^(?![a-z]\w{3}-\d{4}$ |
Pola tidak valid. Seperti contoh sebelumnya, tanda kurung penutupnya tidak ada. Namun, Apigee tidak akan melaporkan error ini saat Anda menyimpan atau mengimpor Proxy API, karena regex menggunakan lookahead negatif, yang berada di luar subset fitur regex yang direkomendasikan. Error hanya akan terdeteksi saat runtime ketika kebijakan dijalankan. |
^(?![a-z])\w{3}-\d{4}$ |
Pola valid, tetapi menggunakan lookahead negatif, yang berada di luar subset fitur regex yang direkomendasikan. Apigee akan menangguhkan validasi dokumen Spesifikasi OpenAPI. Saat runtime, saat Anda menjalankan kebijakan OASValidation yang mereferensikan spesifikasi menggunakan pola ini, karena runtime Apigee sebenarnya mendukung lookahead negatif, Apigee akan menerapkan regex ini dengan benar untuk memvalidasi nilai parameter. |
^(a)?b(?(1)c|d)$ |
Pola valid, tetapi menggunakan kondisi grup pengambilan, yang berada di luar subset fitur regex yang direkomendasikan. Apigee akan menangguhkan validasi dokumen Spesifikasi OpenAPI. Saat runtime, saat Anda menjalankan kebijakan OASValidation yang mereferensikan spesifikasi menggunakan pola ini, karena runtime Apigee tidak mendukung fitur regex ini, Apigee akan menampilkan error. |
Sebaiknya gunakan hanya subset fitur yang direkomendasikan dalam regex Anda untuk mencegah kegagalan runtime.