นโยบายการตรวจสอบความถูกต้องของ OAS

คุณกําลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ Apigee X
info

เกี่ยวกับนโยบาย OASValidation

นโยบาย OASValidation (การตรวจสอบข้อกำหนด OpenAPI) ช่วยให้คุณตรวจสอบคำขอหรือข้อความตอบกลับขาเข้าเทียบกับข้อกำหนด OpenAPI 3.0 (JSON หรือ YAML) ได้ ดูเนื้อหาใดบ้างที่ได้รับการตรวจสอบ

นโยบาย OASValidation จะระบุชื่อข้อกำหนด OpenAPI ที่จะใช้ในการตรวจสอบเมื่อขั้นตอนที่แนบนโยบายอยู่ทำงาน ข้อมูลจำเพาะของ OpenAPI จะจัดเก็บเป็นทรัพยากรในตำแหน่งมาตรฐานภายในกลุ่มพร็อกซี API ต่อไปนี้ apiproxy/resources/oas ข้อกำหนดเฉพาะของ OpenAPI ต้องมีส่วนขยาย .json, .yml, .yaml

เพิ่มข้อกำหนดของ OpenAPI เป็นทรัพยากรไปยังกลุ่มพร็อกซี API โดยใช้ UI หรือ API ตามที่อธิบายไว้ในจัดการทรัพยากร

เนื้อหาใดบ้างที่ได้รับการตรวจสอบ

ตารางต่อไปนี้สรุปเนื้อหาข้อความคำขอที่นโยบาย OASValidation ตรวจสอบตามคอมโพเนนต์

คอมโพเนนต์ ขอการตรวจสอบ
Basepath ตรวจสอบเส้นทางฐานที่กําหนดโดยพร็อกซี API และไม่สนใจเส้นทางฐานที่ระบุไว้ในข้อกําหนดของ OpenAPI
เส้นทาง ตรวจสอบว่าเส้นทางคำขอ (ลบเส้นทางฐาน) ตรงกับรูปแบบเส้นทางรูปแบบใดรูปแบบหนึ่งที่ระบุไว้ในข้อกำหนด OpenAPI
คำกริยา ตรวจสอบว่ากริยาได้รับการกําหนดไว้สําหรับเส้นทางในข้อกําหนด OpenAPI
เนื้อความของคำขอ
  • ตรวจสอบการมีอยู่ของเนื้อหาข้อความในคำขอ หากจำเป็น
  • (ไม่บังคับ) ตรวจสอบเนื้อหาข้อความเทียบกับสคีมาเนื้อหาคำขอของการดำเนินการในข้อกำหนด OpenAPI กำหนดค่าตัวเลือกนี้โดยใช้ <ValidateMessageBody>

หมายเหตุ: นโยบายจะตรวจสอบเนื้อหาข้อความคําขอเทียบกับข้อกําหนดของ OpenAPI เฉพาะในกรณีที่มีการตั้งค่า Content-Type เป็น application/json เท่านั้น หากไม่ได้ตั้งค่าประเภทเนื้อหาเป็น application/json การตรวจสอบเนื้อหาของข้อความคําขอจะผ่านโดยอัตโนมัติ (โดยไม่ตรวจสอบเนื้อหาจริง)

พารามิเตอร์
  • ตรวจสอบว่าคำขอมีพารามิเตอร์ที่จำเป็น ซึ่งรวมถึงพารามิเตอร์เส้นทาง ส่วนหัว การค้นหา และคุกกี้
  • ตรวจสอบว่าค่าพารามิเตอร์ตรงกับค่าที่ระบุไว้ในข้อกําหนดเฉพาะของ OpenAPI
  • (ไม่บังคับ) ตรวจสอบว่าคำขอมีพารามิเตอร์ที่ไม่ได้กำหนดไว้ในข้อกำหนด OpenAPI หรือไม่ กำหนดค่าตัวเลือกนี้โดยใช้ <AllowUnspecifiedParameters>

ตารางต่อไปนี้สรุปเนื้อหาข้อความตอบกลับที่นโยบาย OASValidation ตรวจสอบตามคอมโพเนนต์

คอมโพเนนต์ การตรวจสอบการตอบกลับ
เส้นทาง ตรวจสอบว่าเส้นทางคำขอ (ลบเส้นทางฐาน) ตรงกับรูปแบบเส้นทางรูปแบบใดรูปแบบหนึ่งที่ระบุไว้ในข้อกำหนด OpenAPI
คำกริยา ตรวจสอบว่ากริยาได้รับการกําหนดไว้สําหรับเส้นทางในข้อกําหนด OpenAPI
เนื้อหาข้อความตอบกลับ
  • ตรวจสอบการมีอยู่ของเนื้อหาข้อความในการตอบกลับ หากจำเป็น
  • ตรวจสอบว่าส่วนหัวของคำตอบในข้อกำหนด OpenAPI อยู่ในข้อความตอบกลับ และค่าของส่วนหัวของคำตอบตรงกับสคีมา
  • (ไม่บังคับ) ตรวจสอบเนื้อหาข้อความเทียบกับสคีมาเนื้อหาการตอบกลับของการดำเนินการในข้อกำหนด OpenAPI กำหนดค่าตัวเลือกนี้โดยใช้ <ValidateMessageBody>

ตัวอย่าง

ตัวอย่างต่อไปนี้แสดงวิธีใช้นโยบาย OASValidation เพื่อตรวจสอบข้อความเทียบกับข้อกำหนด OpenAPI 3.0

ตรวจสอบข้อความคำขอ

ในตัวอย่างต่อไปนี้ นโยบาย myoaspolicy จะตรวจสอบความถูกต้องของเนื้อหาข้อความคําขอกับสคีมาเนื้อหาข้อความคําขอของการดำเนินการที่กําหนดไว้ในข้อกําหนดเฉพาะ OpenAPI my-spec.json

<OASValidation name="myoaspolicy">
   <OASResource>oas://my-spec.json</OASResource>
   <Options>
      <ValidateMessageBody>true</ValidateMessageBody>
   </Options>
   <Source>request</Source>
</OASValidation>

หากเนื้อหาข้อความไม่เป็นไปตามข้อกำหนดของ OpenAPI ระบบจะแสดงข้อผิดพลาด policies.oasvalidation.Failed

ตรวจสอบพารามิเตอร์

ตัวอย่างต่อไปนี้จะกําหนดค่านโยบายให้ดำเนินการไม่สําเร็จหากมีการระบุพารามิเตอร์ส่วนหัว การค้นหา หรือคุกกี้ในคําขอที่ไม่ได้กําหนดไว้ในข้อกําหนดเฉพาะ OpenAPI

<OASValidation name="myoaspolicy">
   <OASResource>oas://my-spec.yaml</OASResource>
   <Options>
      <AllowUnspecifiedParameters>
         <Header>false</Header>
         <Query>false</Query>
         <Cookie>false</Cookie>
      </AllowUnspecifiedParameters>
   </Options>
</OASValidation>

องค์ประกอบ <OASValidation>

กำหนดนโยบายการตรวจสอบข้อมูลจำเพาะของ OpenAPI

ค่าเริ่มต้น ดูแท็บนโยบายเริ่มต้นด้านล่าง
ต้องระบุหรือไม่ ต้องระบุ
ประเภท วัตถุที่ซับซ้อน
องค์ประกอบหลัก ไม่มี
องค์ประกอบย่อย <DisplayName>
<OASResource>
<Source>
<Options>
<Source>

ไวยากรณ์

องค์ประกอบ <OASValidation> ใช้ไวยากรณ์ต่อไปนี้

<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>

นโยบายเริ่มต้น

ตัวอย่างต่อไปนี้แสดงการตั้งค่าเริ่มต้นเมื่อคุณเพิ่มนโยบายการตรวจสอบ OAS ลงในขั้นตอนใน 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>

องค์ประกอบนี้มีแอตทริบิวต์ต่อไปนี้ซึ่งมักใช้กับนโยบายทั้งหมด

แอตทริบิวต์ ค่าเริ่มต้น จําเป็นไหม คำอธิบาย
name ไม่มีข้อมูล จำเป็น

ชื่อภายในของนโยบาย ค่าของแอตทริบิวต์ name มีตัวอักษร ตัวเลข ช่องว่าง ขีดกลาง ขีดล่าง และจุดได้ ค่านี้ต้องมีความยาวไม่เกิน 255 อักขระ

ใช้องค์ประกอบ <DisplayName> เพื่อติดป้ายกํากับนโยบายในตัวแก้ไขพร็อกซี UI การจัดการด้วยชื่อภาษาอื่นที่เป็นธรรมชาติได้

continueOnError เท็จ ไม่บังคับ ตั้งค่าเป็น "false" เพื่อแสดงข้อผิดพลาดเมื่อนโยบายล้มเหลว ซึ่งเป็นลักษณะการทํางานที่คาดหวังตามนโยบายส่วนใหญ่ ตั้งค่าเป็น "จริง" เพื่อดําเนินการโฟลว์ข้อมูลต่อไป แม้ว่านโยบายจะล้มเหลวก็ตาม
enabled จริง ไม่บังคับ ตั้งค่าเป็น "true" เพื่อบังคับใช้นโยบาย ตั้งค่าเป็น "false" เพื่อ "ปิด" นโยบาย ระบบจะไม่บังคับใช้นโยบายแม้ว่าจะยังคงแนบไปกับโฟลว์
async   เท็จ เลิกใช้ แอตทริบิวต์นี้เลิกใช้งานแล้ว

การอ้างอิงองค์ประกอบย่อย

ส่วนนี้จะอธิบายองค์ประกอบย่อยของ <OASValidation>

<DisplayName>

ใช้ร่วมกับแอตทริบิวต์ name เพื่อติดป้ายกำกับนโยบายในเครื่องมือแก้ไขพร็อกซี UI การจัดการโดยใช้ชื่ออื่นที่ฟังดูเป็นธรรมชาติมากขึ้น

องค์ประกอบ <DisplayName> ใช้ได้กับทุกนโยบาย

ค่าเริ่มต้น ไม่มี
ต้องระบุหรือไม่ ไม่บังคับ หากคุณละเว้น <DisplayName> ระบบจะใช้ค่าของแอตทริบิวต์ name ของนโยบาย
ประเภท สตริง
องค์ประกอบหลัก <PolicyElement>
องค์ประกอบย่อย ไม่มี

องค์ประกอบ <DisplayName> ใช้ไวยากรณ์ต่อไปนี้

ไวยากรณ์

<PolicyElement>
  <DisplayName>policy_display_name</DisplayName>
  ...
</PolicyElement>

ตัวอย่าง

<PolicyElement>
  <DisplayName>My Validation Policy</DisplayName>
</PolicyElement>

องค์ประกอบ <DisplayName> ไม่มีแอตทริบิวต์หรือองค์ประกอบย่อย

<OASResource>

ระบุข้อกำหนดของ OpenAPI ที่จะตรวจสอบ คุณจัดเก็บไฟล์นี้ได้

  • ที่ขอบเขตพร็อกซี API ในส่วน /apiproxy/resources/oas ในแพ็กเกจพร็อกซี API
  • ในส่วน Resources ของมุมมอง Navigator ของเครื่องมือแก้ไขพร็อกซี API

โปรดดูข้อมูลเพิ่มเติมที่หัวข้อจัดการทรัพยากร

คุณระบุข้อกำหนด OpenAPI ได้โดยใช้เทมเพลตข้อความ เช่น {oas.resource.url} ในกรณีนี้ ระบบจะประเมินค่าของตัวแปรโฟลว์ oas.resource.url (ในวงเล็บปีกกา) และแทนที่ลงในสตริงเพย์โหลดที่รันไทม์ ดูข้อมูลเพิ่มเติมได้ที่เทมเพลตข้อความ

ค่าเริ่มต้น ไม่มี
ต้องระบุหรือไม่ ต้องระบุ
ประเภท สตริง
องค์ประกอบหลัก <OASValidation>
องค์ประกอบย่อย ไม่มี

ไวยากรณ์

องค์ประกอบ <OASResource> ใช้ไวยากรณ์ต่อไปนี้

<OASValidation name="policy_name">
   <OASResource>oas://specname[.json|.yaml|.yml]</OASResource>
   ...
</OASValidation>

ตัวอย่าง

ตัวอย่างต่อไปนี้อ้างอิงถึงข้อกําหนด my-spec.yaml ที่เก็บไว้ภายใต้ /apiproxy/resources/oas ใน API Proxy Bundle

<OASValidation name="myoaspolicy">
   <OASResource>oas://my-spec.yaml</OASResource>
</OASValidation>

องค์ประกอบ <OASResource> ไม่มีแอตทริบิวต์หรือองค์ประกอบย่อย

<Options>

กําหนดค่าตัวเลือกสําหรับนโยบาย

ค่าเริ่มต้น ไม่มี
ต้องระบุหรือไม่ ไม่บังคับ
ประเภท ประเภทคอมเพล็กซ์
องค์ประกอบหลัก <OASValidation>
องค์ประกอบย่อย <ValidateMessageBody>
<AllowUnspecifiedParameters>

ไวยากรณ์

องค์ประกอบ <Options> ใช้ไวยากรณ์ต่อไปนี้

<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>

ตัวอย่าง

ตัวอย่างต่อไปนี้จะกำหนดค่าตัวเลือกสำหรับนโยบาย โปรดดูรายละเอียดเพิ่มเติมของแต่ละตัวเลือกด้านล่าง

<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>

ระบุว่านโยบายควรตรวจสอบเนื้อหาข้อความเทียบกับสคีมาเนื้อหาคำขอของการดำเนินการในข้อกำหนด OpenAPI หรือไม่ ตั้งค่าเป็น true เพื่อตรวจสอบเนื้อหาของข้อความ ตั้งค่าเป็น false เพื่อตรวจสอบเฉพาะว่าเนื้อหาข้อความมีอยู่

คุณควบคุมได้ว่าจะให้การดําเนินการของขั้นตอนทํางานต่อหรือไม่หลังจากเกิดข้อผิดพลาดในการตรวจสอบความถูกต้องโดยการตั้งค่าแอตทริบิวต์ continueOnError ขององค์ประกอบ <OASValidation> เป็น true

ค่าเริ่มต้น เท็จ
ต้องระบุหรือไม่ ไม่บังคับ
ประเภท บูลีน
องค์ประกอบหลัก <Options>
องค์ประกอบย่อย ไม่มี

ไวยากรณ์

องค์ประกอบ <ValidateMessageBody> ใช้ไวยากรณ์ต่อไปนี้

<OASValidation name="policy_name">
   <OASResource>oas://specname[.json|.yaml|.yml]</OASResource>
   <Options>
         <ValidateMessageBody>[true|false]</ValidateMessageBody>
   </Options>
   ...
</OASValidation>

ตัวอย่าง

ตัวอย่างต่อไปนี้เปิดใช้การตรวจสอบเนื้อหาของข้อความ

<OASValidation name="myoaspolicy">
   <OASResource>oas://my-spec.yaml</OASResource>
   <Options>
      <ValidateMessageBody>true</ValidateMessageBody>
   </Options>
</OASValidation>

<AllowUnspecifiedParameters>

กำหนดค่าลักษณะการทํางานของนโยบายหากมีคําขอพารามิเตอร์ส่วนหัว การค้นหา หรือคุกกี้ซึ่งไม่ได้กําหนดไว้ในข้อกําหนดของ OpenAPI

ค่าเริ่มต้น ไม่มี
ต้องระบุหรือไม่ ไม่บังคับ
ประเภท ประเภทคอมเพล็กซ์
องค์ประกอบหลัก <Options>
องค์ประกอบย่อย <Header>
<Query>
<Cookie>

ไวยากรณ์

องค์ประกอบ <AllowUnspecifiedParameters> ใช้ไวยากรณ์ต่อไปนี้

<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>

ตัวอย่าง

ตัวอย่างต่อไปนี้จะกําหนดค่านโยบายให้ดำเนินการไม่สําเร็จหากมีการระบุพารามิเตอร์ส่วนหัว การค้นหา หรือคุกกี้ในคําขอที่ไม่ได้กําหนดไว้ในข้อกําหนดเฉพาะ OpenAPI

<OASValidation name="myoaspolicy">
   <OASResource>oas://my-spec.yaml</OASResource>
   <Options>
      <AllowUnspecifiedParameters>
         <Header>false</Header>
         <Query>false</Query>
         <Cookie>false</Cookie>
      </AllowUnspecifiedParameters>
   </Options>
</OASValidation>

กําหนดค่าลักษณะการทํางานของนโยบายหากมีคําสั่งของส่วนหัวในคําขอที่ไม่ได้กําหนดไว้ในข้อกําหนดของ OpenAPI

หากต้องการอนุญาตให้ระบุพารามิเตอร์ส่วนหัวในคำขอที่ไม่ได้กำหนดไว้ในข้อกำหนด OpenAPI ให้ตั้งค่าพารามิเตอร์นี้เป็น true หรือตั้งค่าพารามิเตอร์นี้เป็น false เพื่อให้การเรียกใช้นโยบายไม่สําเร็จ

ค่าเริ่มต้น จริง
ต้องระบุหรือไม่ บูลีน
ประเภท ประเภทคอมเพล็กซ์
องค์ประกอบหลัก <AllowUnspecifiedParameters>
องค์ประกอบย่อย ไม่มี

ไวยากรณ์

องค์ประกอบ <Header> ใช้ไวยากรณ์ต่อไปนี้

<OASValidation name="policy_name">
   <OASResource>oas://specname[.json|.yaml|.yml]</OASResource>
   <Options>
      <AllowUnspecifiedParameters>
         <Header>[true|false]</Header>
      </AllowUnspecifiedParameters>
   </Options>
   ...
</OASValidation>

ตัวอย่าง

ตัวอย่างต่อไปนี้จะกําหนดค่านโยบายให้ดำเนินการไม่สําเร็จหากมีการระบุพารามิเตอร์ส่วนหัวในคําขอที่ไม่ได้กําหนดไว้ในข้อกําหนด OpenAPI

<OASValidation name="myoaspolicy">
   <OASResource>oas://my-spec.yaml</OASResource>
   <Options>
      <AllowUnspecifiedParameters>
         <Header>false</Header>
      </AllowUnspecifiedParameters>
   </Options>
</OASValidation>

<Query> (บุตรของ <AllowUnspecifiedParameters>)

กำหนดค่าลักษณะการทํางานของนโยบายหากมีคําขอพารามิเตอร์การค้นหาที่ไม่มีการระบุไว้ในข้อกําหนดของ OpenAPI

หากต้องการอนุญาตให้ระบุพารามิเตอร์การค้นหาในคำขอที่ไม่ได้กำหนดไว้ในข้อกำหนด OpenAPI ให้ตั้งค่าพารามิเตอร์นี้เป็น true หรือตั้งค่าพารามิเตอร์นี้เป็น false เพื่อให้การเรียกใช้นโยบายไม่สําเร็จ

ค่าเริ่มต้น จริง
ต้องระบุหรือไม่ บูลีน
ประเภท ประเภทคอมเพล็กซ์
องค์ประกอบหลัก <AllowUnspecifiedParameters>
องค์ประกอบย่อย ไม่มี

ไวยากรณ์

องค์ประกอบ <Query> ใช้ไวยากรณ์ต่อไปนี้

<OASValidation name="policy_name">
   <OASResource>oas://specname[.json|.yaml|.yml]</OASResource>
   <Options>
      <AllowUnspecifiedParameters>
         <Query>[true|false]</Query>
      </AllowUnspecifiedParameters>
   </Options>
   ...
</OASValidation>

ตัวอย่าง

ตัวอย่างต่อไปนี้จะกําหนดค่านโยบายให้ดำเนินการไม่สําเร็จหากมีการระบุพารามิเตอร์การค้นหาในคําขอที่ไม่ได้กําหนดไว้ในข้อกําหนด OpenAPI

<OASValidation name="myoaspolicy">
   <OASResource>oas://my-spec.yaml</OASResource>
   <Options>
      <AllowUnspecifiedParameters>
         <Query>false</Query>
      </AllowUnspecifiedParameters>
   </Options>
</OASValidation>

กำหนดค่าลักษณะการทํางานของนโยบายหากมีพารามิเตอร์คุกกี้อยู่ในคําขอที่ไม่ได้กําหนดไว้ในข้อกําหนดของ OpenAPI

หากต้องการอนุญาตให้ระบุพารามิเตอร์คุกกี้ในคำขอที่ไม่ได้กำหนดไว้ในข้อกำหนด OpenAPI ให้ตั้งค่าพารามิเตอร์นี้เป็น true หรือตั้งค่าพารามิเตอร์นี้เป็น false เพื่อให้การเรียกใช้นโยบายไม่สําเร็จ

ค่าเริ่มต้น จริง
ต้องระบุหรือไม่ บูลีน
ประเภท ประเภทคอมเพล็กซ์
องค์ประกอบหลัก <AllowUnspecifiedParameters>
องค์ประกอบย่อย ไม่มี

ไวยากรณ์

องค์ประกอบ <Cookie> ใช้ไวยากรณ์ต่อไปนี้

<OASValidation name="policy_name">
   <OASResource>oas://specname[.json|.yaml|.yml]</OASResource>
   <Options>
      <AllowUnspecifiedParameters>
         <Query>[true|false]</Query>
      </AllowUnspecifiedParameters>
   </Options>
   ...
</OASValidation>

ตัวอย่าง

ตัวอย่างต่อไปนี้จะกําหนดค่านโยบายให้ดำเนินการไม่สําเร็จหากมีการระบุพารามิเตอร์การค้นหาในคําขอที่ไม่ได้กําหนดไว้ในข้อกําหนด OpenAPI

<OASValidation name="myoaspolicy">
   <OASResource>oas://my-spec.yaml</OASResource>
   <Options>
      <AllowUnspecifiedParameters>
         <Cookie>false</Cookie>
      </AllowUnspecifiedParameters>
   </Options>
</OASValidation>

<Source>

ข้อความ JSON ที่จะประเมินการโจมตีเพย์โหลด JSON โดยปกติแล้วการตั้งค่านี้จะตั้งเป็น request เนื่องจากคุณจะต้องประเมินคําขอขาเข้าจากแอปไคลเอ็นต์ ตั้งค่าเป็น response เพื่อประเมินข้อความตอบกลับ ตั้งค่าเป็น message เพื่อประเมินข้อความคําขอโดยอัตโนมัติเมื่อแนบนโยบายกับขั้นตอนคําขอ และข้อความตอบกลับเมื่อแนบนโยบายกับขั้นตอนตอบกลับ

ค่าเริ่มต้น ส่งคำขอ
ต้องระบุหรือไม่ ไม่บังคับ
ประเภท สตริง
องค์ประกอบหลัก <Source>
องค์ประกอบย่อย ไม่มี

ไวยากรณ์

องค์ประกอบ <Source> ใช้ไวยากรณ์ต่อไปนี้

<OASValidation name="policy_name">
   <OASResource>oas://specname[.json|.yaml|.yml]</OASResource>
   <Source>[message|request|response]</Source>
   ...
</OASValidation>

ตัวอย่าง

ตัวอย่างต่อไปนี้จะประเมินข้อความคําขอโดยอัตโนมัติเมื่อแนบนโยบายกับขั้นตอนการส่งคําขอ และข้อความตอบกลับเมื่อแนบนโยบายกับขั้นตอนการตอบกลับ

<OASValidation name="myoaspolicy">
   <OASResource>oas://my-spec.yaml</OASResource>
   <Source>message</Source>
</OASValidation>

องค์ประกอบ <Source> ไม่มีแอตทริบิวต์หรือองค์ประกอบย่อย

สคีมา

นโยบายแต่ละประเภทจะกำหนดโดยสคีมา XML (.xsd) สคีมานโยบายมีให้ใช้งานเป็นข้อมูลอ้างอิงใน GitHub

รหัสข้อผิดพลาด

ส่วนนี้จะอธิบายโค้ดข้อผิดพลาดและข้อความแสดงข้อผิดพลาดที่แสดงผลและตัวแปรข้อผิดพลาดที่ Edge กําหนดเมื่อนโยบายนี้ทําให้เกิดข้อผิดพลาด ข้อมูลนี้เป็นสิ่งสำคัญที่ต้องทราบหากคุณกำลังกำหนดกฎข้อผิดพลาดเพื่อจัดการกับข้อผิดพลาด ดูข้อมูลเพิ่มเติมได้ที่สิ่งที่คุณต้องทราบเกี่ยวกับข้อผิดพลาดของนโยบายและการจัดการข้อผิดพลาด

ข้อผิดพลาดเกี่ยวกับรันไทม์

ข้อผิดพลาดเหล่านี้อาจเกิดขึ้นเมื่อนโยบายทำงาน

รหัสข้อผิดพลาด สถานะ HTTP สาเหตุ
steps.oasvalidation.Failed 500 ตรวจสอบเนื้อหาของคำขอกับข้อกําหนดของ OpenAPI ที่ระบุไม่ได้
steps.oasvalidation.SourceMessageNotAvailable 500

ตัวแปรที่ระบุในองค์ประกอบ <Source> ของนโยบายอยู่นอกขอบเขตหรือแก้ไขไม่ได้

steps.oasvalidation.NotMessageVariable 500

องค์ประกอบ <Source> ได้รับการตั้งค่าเป็นตัวแปรที่ไม่ใช่ประเภท ข้อความ

ข้อผิดพลาดในการทำให้ใช้งานได้

ข้อผิดพลาดเหล่านี้อาจเกิดขึ้นเมื่อคุณใช้พร็อกซีที่มีนโยบายนี้

ชื่อข้อผิดพลาด สาเหตุ
ResourceDoesNotExist ไม่มีข้อมูลจำเพาะของ OpenAPI ที่อ้างอิงในองค์ประกอบ <OASResource>
ResourceCompileFailed ข้อมูลจำเพาะของ OpenAPI ที่รวมอยู่ในการทำให้ใช้งานได้มีข้อผิดพลาดที่ทำให้ไม่สามารถคอมไพล์ได้ โดยทั่วไปเป็นการบ่งชี้ว่าข้อมูลจำเพาะไม่ใช่ OpenAPI Specification 3.0 ที่มีรูปแบบถูกต้อง
BadResourceURL ไม่สามารถประมวลผลข้อมูลจำเพาะของ OpenAPI ที่อ้างอิงในองค์ประกอบ <OASResource> ได้ ปัญหานี้อาจเกิดขึ้นหากไฟล์ไม่ใช่ไฟล์ JSON หรือ YAML หรือระบุ URL ของไฟล์ไม่ถูกต้อง

ตัวแปรของข้อผิดพลาด

ระบบจะตั้งค่าตัวแปรเหล่านี้เมื่อนโยบายนี้ทริกเกอร์ข้อผิดพลาดขณะรันไทม์ ดูข้อมูลเพิ่มเติมเกี่ยวกับสิ่งที่คุณจำเป็นต้องทราบเกี่ยวกับข้อผิดพลาดของนโยบาย

ตัวแปร สถานที่ ตัวอย่าง
fault.name="fault_name" fault_name คือชื่อของข้อผิดพลาดตามที่แสดงในตารางข้อผิดพลาดรันไทม์ด้านบน ชื่อข้อผิดพลาดคือส่วนสุดท้ายของโค้ดข้อผิดพลาด fault.name Matches "ResourceDoesNotExist"
oasvalidation.policy_name.failed policy_name คือชื่อที่ผู้ใช้ระบุของนโยบายที่เป็นข้อผิดพลาด oasvalidation.myoaspolicy.failed = true

ฟีเจอร์ของข้อกำหนด OpenAPI ที่รองรับ

นโยบาย OASValidation รองรับฟีเจอร์ของข้อกำหนด OpenAPI ซึ่งสรุปไว้ในตารางต่อไปนี้ตามหมวดหมู่ ระบบจะแสดงฟีเจอร์ที่ไม่รองรับด้วย

หมวดหมู่ รองรับ ไม่รองรับ
รูปแบบประเภทข้อมูล boolean
date
date-time
double
email
float
int32/int64
ipv4/ipv6
md5
sha1/sha256/sha512
string
uri
uri-template
uuid
binary
byte
password
ออบเจ็กต์ตัวแบ่ง mapping
propertyName
ไม่มี
ออบเจ็กต์ประเภทสื่อ สคีมา encoding
example
examples
ออบเจ็กต์การดำเนินการ parameters
requestBody
responses
security (รองรับบางส่วน)
callbacks
เลิกใช้งานแล้ว
เซิร์ฟเวอร์
ออบเจ็กต์พารามิเตอร์ allowEmptyValue
in (query, header, path)
required
responses
schema
style (deepObject, form, formmatrix, label, pipeDelimited, simple, spaceDelimited)

หมายเหตุ: deepObject รองรับพารามิเตอร์สตริงเท่านั้น ไม่รองรับอาร์เรย์และออบเจ็กต์ที่ฝังอยู่
allowReserved
deprecated
example
examples
content
ออบเจ็กต์เส้นทาง delete
get
head
options
parameters
patch
post
put
trace
variables
เซิร์ฟเวอร์
ออบเจ็กต์เนื้อหาคำขอ application/json
application/hal+json
application/x-www-form-urlencoded (ไม่รองรับออบเจ็กต์ encoding)
content
required
application/xml
multipart/form-data
text/plain
text/xml
ออบเจ็กต์คำตอบ application/json
application/hal+json
application/x-www-form-urlencoded (encoding ไม่รองรับออบเจ็กต์)
content
headers
application/xml
links
text/plain
text/xml
ออบเจ็กต์คำตอบ default
รหัสสถานะ HTTP
ไม่มี
ออบเจ็กต์สคีมา $ref
additionalProperties (ตัวแปร Flag บูลีนเท่านั้น)
allOf (ระบบจะไม่สนใจหาก additionalProperties เป็น 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
deprecated
example
readOnly
writeOnly
xml
ออบเจ็กต์รูปแบบการรักษาความปลอดภัย in (header, query) (ละเว้นหาก type เป็น http)
ชื่อ
ประเภท (apiKey, http)
bearerFormat
flows
openIdConnectUrl
scheme
ออบเจ็กต์เซิร์ฟเวอร์ url
variables
คำจำกัดความเซิร์ฟเวอร์หลายรายการ

หัวข้อที่เกี่ยวข้อง