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

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

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

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

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

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

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

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

คอมโพเนนต์ ขอการตรวจสอบ
ทางเท้า ตรวจสอบเส้นทางฐานที่พร็อกซี 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 ขั้นตอนการใช้งานใน Apigee UI มีดังนี้

<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 ของนโยบาย
ประเภท สตริง
องค์ประกอบระดับบนสุด &lt;PolicyElement&gt;
องค์ประกอบย่อย ไม่มี

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

ไวยากรณ์

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

ตัวอย่าง

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

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

<OASResource>

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

  • ที่ขอบเขตพร็อกซี API ภายใต้ /apiproxy/resources/oas ในกลุ่มพร็อกซี API
  • ในส่วน Resources ในมุมมองการนำทางของเครื่องมือแก้ไขพร็อกซี 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> ไม่มีแอตทริบิวต์หรือองค์ประกอบย่อย

&lt;Options&gt;

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

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

&lt;ValidateMessageBody&gt;

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

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

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

หมายเหตุ: deepObject รองรับพารามิเตอร์สตริงเท่านั้น ระบบไม่รองรับอาร์เรย์และออบเจ็กต์ที่ซ้อนกัน
allowReserved
เลิกใช้งานแล้ว
ตัวอย่าง
ตัวอย่าง
เนื้อหา
ออบเจ็กต์เส้นทาง ลบ
ดาวน์โหลด
ศีรษะ
ตัวเลือก
พารามิเตอร์
แพตช์
โพสต์
ใส่
ติดตาม
ตัวแปร
เซิร์ฟเวอร์
ออบเจ็กต์เนื้อหาคำขอ application/json
application/hal+json
application/x-www-form-urlencrypted (ไม่รองรับออบเจ็กต์ encoding)
เนื้อหา
ต้องระบุ
แอปพลิเคชัน/xml
ข้อมูลหลายส่วน/ข้อมูลแบบฟอร์ม
ข้อความ/ธรรมดา
ข้อความ/xml
ออบเจ็กต์การตอบกลับ application/json
application/hal+json
application/x-www-form-urlencrypted (ไม่รองรับออบเจ็กต์ encoding)
เนื้อหา
ส่วนหัว
แอปพลิเคชัน/xml
ลิงก์
ข้อความ/ธรรมดา
ข้อความ/xml
ออบเจ็กต์การตอบกลับ ค่าเริ่มต้น
รหัสสถานะ HTTP
ไม่มี
ออบเจ็กต์สคีมา $ref
คุณสมบัติเพิ่มเติม (ตัวแปรแฟล็กบูลีนเท่านั้น)
allOf (ละเว้นหาก additionalProperties เป็น false)
anyOf
enum
exclusiveMaximum/exclusiveMinimum
รูปแบบ
รายการ
สูงสุด/ต่ำสุด
maxItems/minItems
maxLength/minLength
maxProperties/minProperties
multipleOf
ไม่ใช่
เว้นว่างได้
oneOf
ลาย
พร็อพเพอร์ตี้
ต้องระบุ
ชื่อ
ประเภท
uniqueItems
เลิกใช้งานแล้ว
ตัวอย่าง
readOnly
writeOnly
XML
ออบเจ็กต์รูปแบบการรักษาความปลอดภัย ใน (header, query) (จะไม่สนใจหาก type คือ http)
ชื่อ
ประเภท (apiKey, http)
bearerFormat
โฟลว์
openIdConnectUrl
สคีม
ออบเจ็กต์เซิร์ฟเวอร์ url
ตัวแปร
การกำหนดเซิร์ฟเวอร์หลายรายการ

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