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

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

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

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

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

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

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

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

คอมโพเนนต์ ขอการตรวจสอบ
ฐานรอง ตรวจสอบเส้นทางพื้นฐานที่กำหนดโดยพร็อกซี API โดยไม่สนใจ Basepath ที่ระบุในข้อมูลจำเพาะของ 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

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

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

<ตัวเลือก>

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

ค่าเริ่มต้น ไม่มี
ต้องระบุหรือไม่ ไม่บังคับ
ประเภท ประเภทที่ซับซ้อน
องค์ประกอบระดับบน <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

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

ค่าเริ่มต้น ส่งคำขอ
ต้องระบุหรือไม่ ไม่บังคับ
ประเภท สตริง
องค์ประกอบระดับบน <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 ที่สรุปไว้ในตารางต่อไปนี้ตามหมวดหมู่ รวมถึงระบุฟีเจอร์ที่ไม่รองรับไว้ด้วย

หมวดหมู่ รองรับ ไม่รองรับ
รูปแบบประเภทข้อมูล บูลีน
วันที่
วันที่และเวลา
ดับเบิล
อีเมล
Float
int32/int64
ipv4/ipv6
md5
sha1/sha256/sha512
string
uri
uri-template
uuid
ไบนารี
ไบต์
รหัสผ่าน
ออบเจ็กต์ Discriminator การแมป
propertyName
ไม่มีข้อมูล
ออบเจ็กต์ประเภทสื่อ สคีมา การเข้ารหัส
ตัวอย่าง
ตัวอย่าง
ออบเจ็กต์การดำเนินการ พารามิเตอร์
requestBody
การตอบสนอง
ความปลอดภัย (การสนับสนุนบางส่วน)
โค้ดเรียกกลับ
เซิร์ฟเวอร์ที่เลิกใช้งานแล้ว
ออบเจ็กต์พารามิเตอร์ AllowEmptyValue
ใน (query, header, path)
ต้องระบุ
คำตอบ
รูปแบบ
สคีมา (deepObject, form, formmatrix, label, pipeDelimited, simple, spaceDelimited)

หมายเหตุ: deepObject รองรับพารามิเตอร์สตริงเท่านั้น ไม่รองรับอาร์เรย์และออบเจ็กต์ที่ซ้อนกัน
อนุญาต
เลิกใช้งาน
ตัวอย่าง
ตัวอย่าง
เนื้อหา
ออบเจ็กต์เส้นทาง ลบ
รับ
head
ตัวเลือก
พารามิเตอร์
แพตช์
โพสต์
put
การติดตาม
ตัวแปร
เซิร์ฟเวอร์
ออบเจ็กต์เนื้อหาคำขอ application/json
application/hal+json
application/x-www-form-urlencoded (ไม่รองรับออบเจ็กต์ encoding)
content
ต้องระบุ
แอปพลิเคชัน/xml
multipart/form-data
text/plain
text/xml
ออบเจ็กต์การตอบกลับ แอปพลิเคชัน/json
application/hal+json
application/x-www-form-urlencrypted (ไม่รองรับออบเจ็กต์ encoding)
เนื้อหา
ส่วนหัว
แอปพลิเคชัน/xml
ลิงก์
ข้อความ/ธรรมดา
ข้อความ/xml
ออบเจ็กต์การตอบกลับ ค่าเริ่มต้น
รหัสสถานะ HTTP
ไม่มีข้อมูล
ออบเจ็กต์สคีมา $ref
additionalProperties (ตัวแปรแฟล็กบูลีนเท่านั้น)
allOf (จะไม่สนใจหาก additionalProperties เป็น false)
anyOf
enum
excludedัก/restrictmax ขั้นต่ำ

items
maximum/minimum
maxItems/minItems
maxLength/minLength
maxProperties/minProperties
multipleOf
not
nullable
Item
one
patterns
Property


เลิกใช้งาน
ตัวอย่าง
readOnly
writeOnly
xml
ออบเจ็กต์รูปแบบความปลอดภัย ใน (header, query) (จะไม่สนใจหาก type คือ http)
ชื่อ
ประเภท (apiKey, http)
BearerFormat
flow
openIdConnectUrl
รูปแบบ
ออบเจ็กต์เซิร์ฟเวอร์ ตัวแปร
url
การกำหนดเซิร์ฟเวอร์หลายรายการ

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