คุณกำลังดูเอกสารประกอบ Apigee Edge
ไปที่
เอกสารประกอบเกี่ยวกับ Apigee X. ข้อมูล
อะไร
นโยบาย AssignMessage จะเปลี่ยนแปลงหรือสร้างคำขอและข้อความตอบกลับใหม่ระหว่างกระบวนการของพร็อกซี API นโยบายนี้ให้คุณดำเนินการต่อไปนี้กับข้อความเหล่านั้น
- เพิ่มพารามิเตอร์แบบฟอร์ม ส่วนหัว หรือพารามิเตอร์การค้นหาใหม่ลงในข้อความ
- คัดลอกพร็อพเพอร์ตี้ที่มีอยู่จากข้อความหนึ่งไปยังอีกข้อความ
- ลบส่วนหัว พารามิเตอร์การค้นหา พารามิเตอร์แบบฟอร์ม และ/หรือข้อความ เพย์โหลดจากข้อความ
- กำหนดค่าของพร็อพเพอร์ตี้ที่มีอยู่ในข้อความ
เมื่อใช้นโยบาย AssignMessage ไปให้คุณเพิ่ม เปลี่ยนแปลง หรือนำพร็อพเพอร์ตี้ของ คำขอหรือการตอบกลับ แต่คุณก็สามารถใช้นโยบาย AssignMessage เพื่อสร้าง ข้อความคำขอหรือข้อความตอบกลับ และส่งไปยังเป้าหมายอื่นตามที่อธิบายไว้ใน สร้างข้อความคำขอที่กำหนดเอง
นโยบาย AssignMessage สามารถสร้างหรือเปลี่ยนตัวแปรโฟลว์ด้วยองค์ประกอบย่อยต่อไปนี้ องค์ประกอบ:
องค์ประกอบ <AssignMessage>
กำหนดนโยบาย AssignMessage
ค่าเริ่มต้น | ดูแท็บนโยบายเริ่มต้นด้านล่าง |
ต้องระบุหรือไม่ | ต้องระบุ |
ประเภท | ออบเจ็กต์ที่ซับซ้อน |
องค์ประกอบระดับบนสุด | ไม่มี |
องค์ประกอบย่อย |
<Add> <AssignTo> <AssignVariable> <Copy> <DisplayName> <IgnoreUnresolvedVariables> <Remove> <Set> |
องค์ประกอบ <AssignMessage>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
องค์ประกอบ <AssignMessage>
ใช้ไวยากรณ์ต่อไปนี้
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <!-- All AssignMessage child elements are optional --> <Add> <FormParams> <FormParam name="formparam_name">formparam_value</FormParam> ... </FormParams> <Headers> <Header name="header_name">header_value</Header> ... </Headers> <QueryParams> <QueryParam name="queryparam_name">queryparam_value</QueryParam> ... </QueryParams> </Add> <AssignTo createNew="[true|false]" transport="http" type="[request|response]">destination_variable_name</AssignTo> <AssignVariable> <Name>variable_name</Name> <Ref>source_variable</Ref> <Template>message_template</Template> or <Template ref='template_variable'></Template> <Value>variable_value</Value> </AssignVariable> <Copy source="[request|response]"> <!-- Can also be an empty array (<FormParams/>) --> <FormParams> <FormParam name="formparam_name">formparam_value</FormParam> ... </FormParams> <!-- Can also be an empty array (<Headers/>) --> <Headers> <Header name="header_name">header_value</Header> ... </Headers> <Path>[false|true]</Path> <Payload>[false|true]</Payload> <!-- Can also be an empty array (<QueryParams/>) --> <QueryParams> <QueryParam name="queryparam_name">queryparam_value</QueryParam> ... </QueryParams> <ReasonPhrase>[false|true]</ReasonPhrase> <StatusCode>[false|true]</StatusCode> <Verb>[false|true]</Verb> <Version>[false|true]</Version> </Copy> <DisplayName>policy_display_name</DisplayName> <IgnoreUnresolvedVariables>[true|false]</IgnoreUnresolvedVariables> <Remove> <!-- Can also be an empty array (<FormParams/>) --> <FormParams> <FormParam name="formparam_name">formparam_value</FormParam> ... </FormParams> <!-- Can also be an empty array (<Headers/>) --> <Headers> <Header name="header_name">header_value</Header> ... </Headers> <Payload>[false|true]</Payload> <!-- Can also be an empty array (<QueryParams/>) --> <QueryParams> <QueryParam name="queryparam_name">queryparam_value</QueryParam> ... </QueryParams> </Remove> <Set> <FormParams> <FormParam name="formparam_name">formparam_value</FormParam> ... </FormParams> <Headers> <Header name="header_name">header_value</Header> ... </Headers> <Path>path</Path> <Payload contentType="content_type" variablePrefix="prefix" variableSuffix="suffix">new_payload</Payload> <QueryParams> <QueryParam name="queryparam_name">queryparam_value</QueryParam> ... </QueryParams> <ReasonPhrase>reason_for_error or {variable}</ReasonPhrase> <StatusCode>HTTP_status_code or {variable}</StatusCode> <Verb>[GET|POST|PUT|PATCH|DELETE|{variable}]</Verb> <Version>[1.0|1.1|{variable}]</Verb> </Set> </AssignMessage>
นโยบายเริ่มต้น
ตัวอย่างต่อไปนี้แสดงการตั้งค่าเริ่มต้นเมื่อคุณเพิ่มนโยบาย AssignMessage การดำเนินการของคุณใน Edge UI ดังนี้
<AssignMessage continueOnError="false" enabled="true" name="assign-message-default"> <DisplayName>Assign Message-1</DisplayName> <Properties/> <Copy source="request"> <Headers/> <QueryParams/> <FormParams/> <Payload/> <Verb/> <StatusCode/> <ReasonPhrase/> <Path/> </Copy> <Remove> <Headers> <Header name="h1"/> </Headers> <QueryParams> <QueryParam name="q1"/> </QueryParams> <FormParams> <FormParam name="f1"/> </FormParams> <Payload/> </Remove> <Add> <Headers/> <QueryParams/> <FormParams/> </Add> <Set> <Headers/> <QueryParams/> <FormParams/> <!-- <Verb>GET</Verb> --> <Path/> </Set> <AssignVariable> <Name>name</Name> <Value/> <Ref/> </AssignVariable> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
เมื่อคุณแทรกนโยบาย AssignMessage ใหม่ใน Edge UI เทมเพลตจะมี Stub สำหรับ
การดำเนินงานที่เป็นไปได้ โดยปกติแล้ว คุณจะเป็นผู้เลือกการดำเนินการที่ต้องการทำกับนโยบายนี้
และนำองค์ประกอบย่อยที่เหลือออก ตัวอย่างเช่น หากต้องการดำเนินการคัดลอก ให้ใช้
<Copy>
และนำ <Add>
, <Remove>
และองค์ประกอบย่อยอื่นๆ ออกจากองค์ประกอบ
นโยบายให้อ่านง่ายขึ้น
องค์ประกอบนี้มีแอตทริบิวต์ต่อไปนี้ซึ่งมักใช้กับนโยบายทั้งหมด
แอตทริบิวต์ | ค่าเริ่มต้น | จําเป็นไหม | คำอธิบาย |
---|---|---|---|
name |
ไม่มีข้อมูล | จำเป็น |
ชื่อภายในของนโยบาย ค่าของแอตทริบิวต์ ใช้องค์ประกอบ |
continueOnError |
เท็จ | ไม่บังคับ | ตั้งค่าเป็น "false" เพื่อแสดงข้อผิดพลาดเมื่อนโยบายล้มเหลว ซึ่งเป็นลักษณะการทํางานที่คาดหวังตามนโยบายส่วนใหญ่ ตั้งค่าเป็น "จริง" เพื่อดําเนินการโฟลว์ข้อมูลต่อไป แม้ว่านโยบายจะล้มเหลวก็ตาม |
enabled |
จริง | ไม่บังคับ | ตั้งค่าเป็น "true" เพื่อบังคับใช้นโยบาย ตั้งค่าเป็น "false" เพื่อ "ปิด" นโยบาย ระบบจะไม่บังคับใช้นโยบายแม้ว่าจะยังคงแนบไปกับโฟลว์ |
async |
เท็จ | เลิกใช้ | แอตทริบิวต์นี้เลิกใช้งานแล้ว |
ตารางต่อไปนี้จะให้คำอธิบายระดับสูงขององค์ประกอบย่อยของ
<AssignMessage>
:
องค์ประกอบย่อย | จำเป็นหรือไม่ | คำอธิบาย |
---|---|---|
การดำเนินการทั่วไป | ||
<Add> |
ไม่บังคับ | เพิ่มข้อมูลในออบเจ็กต์ข้อความที่ระบุโดย
องค์ประกอบ <AssignTo>
|
<Copy> |
ไม่บังคับ | คัดลอกข้อมูลจากข้อความที่ source ระบุ
to ไปยังออบเจ็กต์ข้อความที่ระบุโดยองค์ประกอบ <AssignTo> |
<Remove> |
ไม่บังคับ | ลบองค์ประกอบที่ระบุออกจากตัวแปรข้อความที่ระบุไว้ใน
<AssignTo> |
<Set> |
ไม่บังคับ | แทนที่ค่าของพร็อพเพอร์ตี้ที่มีอยู่ในคำขอหรือการตอบกลับ ซึ่งระบุโดย
เอลิเมนต์ <AssignTo>
|
องค์ประกอบย่อยอื่นๆ | ||
<AssignTo> |
ไม่บังคับ | ระบุข้อความที่นโยบาย AssignMessage ดำเนินการ นี่อาจเป็นแท็กมาตรฐาน คำขอหรือการตอบกลับ หรืออาจเป็นข้อความใหม่ที่กำหนดเองก็ได้ |
<AssignVariable> |
ไม่บังคับ | กำหนดค่าให้กับตัวแปรโฟลว์ หากไม่มีตัวแปรอยู่
<AssignVariable> เป็นผู้สร้าง |
<IgnoreUnresolvedVariables> |
ไม่บังคับ | กำหนดว่าการประมวลผลจะหยุดเมื่อพบตัวแปรที่ยังไม่ได้รับคำตอบหรือไม่ |
องค์ประกอบย่อยแต่ละรายการเหล่านี้จะอธิบายไว้ในส่วนถัดไป
ตัวอย่าง
ตัวอย่างต่อไปนี้แสดงวิธีต่างๆ ที่คุณจะใช้นโยบาย AssignMessage ได้ นโยบาย:
1: เพิ่มส่วนหัว
ตัวอย่างต่อไปนี้จะเพิ่มส่วนหัวในคำขอที่มี
องค์ประกอบ <Add>
:
<AssignMessage continueOnError="false" enabled="true" name="add-headers-1"> <Add> <Headers> <Header name="user-agent">{request.user.agent}</Header> </Headers> </Add> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
2: นำเพย์โหลดออก
ตัวอย่างต่อไปนี้จะลบเพย์โหลดออกจากการตอบกลับที่มี <Remove>
องค์ประกอบ:
<AssignMessage continueOnError="false" enabled="true" name="remove-1"> <DisplayName>remove-1</DisplayName> <Remove> <Payload>true</Payload> </Remove> <AssignTo createNew="false" transport="http" type="response"/> </AssignMessage>
3: แก้ไขคำตอบ
ตัวอย่างต่อไปนี้แก้ไขออบเจ็กต์การตอบกลับที่มีอยู่โดยการเพิ่มส่วนหัวให้กับออบเจ็กต์ดังกล่าว
<AssignMessage name="modify-response"> <Set> <Headers> <Header name="Cache-Hit">{lookupcache.LookupCache-1.cachehit}</Header> </Headers> </Set> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <AssignTo createNew="false" type="response"></AssignTo> </AssignMessage>
ตัวอย่างนี้จะไม่สร้างข้อความใหม่ แต่จะปรับ ข้อความตอบกลับที่มีอยู่ด้วยการเพิ่มส่วนหัว HTTP
เนื่องจากตัวอย่างนี้ไม่รวมชื่อตัวแปรในองค์ประกอบ <AssignTo>
และระบุ
type
เป็น "response" นโยบายนี้จะแก้ไขออบเจ็กต์การตอบกลับที่เป้าหมายแสดงผล
เซิร์ฟเวอร์
ส่วนหัว HTTP ที่เพิ่มลงในข้อความตอบกลับโดยนโยบายนี้ได้มาจากตัวแปร ป้อนข้อมูลโดยนโยบาย LookupCache ดังนั้นข้อความตอบกลับที่แก้ไขโดยข้อมูลนี้ ระบุนโยบายข้อความมีส่วนหัว HTTP ที่ระบุว่าผลลัพธ์ได้รับ ดึงมาจากแคชหรือไม่ การตั้งค่าส่วนหัวในการตอบกลับอาจมีประโยชน์สำหรับการแก้ไขข้อบกพร่อง และ การแก้ปัญหา
4: ตั้งค่าเนื้อหาแบบไดนามิก
คุณสามารถใช้ "กำหนดข้อความ" เพื่อฝังเนื้อหาไดนามิกในเพย์โหลดการตอบกลับและ ข้อความคำขอ
หากต้องการฝังตัวแปรโฟลว์ Edge ในเพย์โหลด XML ให้รวมตัวแปรที่กำหนดเป็นเส้นโค้ง
วงเล็บปีกกา เช่น {prefix.name}
ตัวอย่างต่อไปนี้ฝังค่าของตัวแปรโฟลว์ส่วนหัว HTTP user-agent
ในองค์ประกอบ XML ชื่อ User-agent
:
<AssignMessage name="set-dynamic-content"> <AssignTo createNew="false" type="response"></AssignTo> <Set> <Payload contentType="text/xml"> <User-agent>{request.header.user-agent}</User-agent> </Payload> </Set> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> </AssignMessage>
สำหรับเพย์โหลด JSON คุณจะแทรกตัวแปรโดยใช้ variablePrefix
และ
แอตทริบิวต์ variableSuffix
ที่มีอักขระตัวคั่นดังที่แสดงดังต่อไปนี้
ตัวอย่าง:
<AssignMessage name="set-payload"> <Payload contentType="application/json" variablePrefix="@" variableSuffix="#"> { "user-agent": "@request.header.user-agent#" } </Payload> </AssignMessage>
หากต้องการดูรายการตัวแปรโฟลว์ทั้งหมด โปรดดูข้อมูลอ้างอิงตัวแปรโฟลว์
ตั้งแต่ระบบคลาวด์รุ่น 16.08.17 คุณใช้วงเล็บปีกกาเพื่อแทรกตัวแปรได้ด้วย
5: นำพารามิเตอร์ข้อความค้นหาออก
ตัวอย่างต่อไปนี้จะนําพารามิเตอร์การค้นหา apikey
ออกจากคําขอ
<AssignMessage name="remove-query-param"> <Remove> <QueryParams> <QueryParam name="apikey"/> </QueryParams> </Remove> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
แนวทางปฏิบัติแนะนำคือให้ตัดพารามิเตอร์การค้นหา apikey
ออกจากคำขอ
เมื่อใช้นโยบาย VerifyAPIKey สำหรับการตรวจสอบสิทธิ์ผู้ใช้ คุณดำเนินการนี้เพื่อป้องกัน
ข้อมูลสำคัญที่ละเอียดอ่อนส่งไปยังเป้าหมายแบ็กเอนด์
6: ตั้งค่า/รับตัวแปร
ตัวอย่างต่อไปนี้ใช้นโยบายมอบหมายข้อความสามข้อ
- สร้างตัวแปรโฟลว์ 3 รายการในคำขอ พร้อมค่าแบบคงที่
- รับตัวแปรของโฟลว์แบบไดนามิกในนโยบายที่ 2 ในโฟลว์คำขอ
- กำหนดในเพย์โหลดของคำตอบ
<!-- Policy #1: Set variables in the request --> <AssignMessage continueOnError="false" enabled="true" name="set-variables"> <!-- Create a variable named myAppSecret --> <AssignVariable> <Name>myAppSecret</Name> <Value>42</Value> </AssignVariable> <!-- Create a variable named config.environment --> <AssignVariable> <Name>config.environment</Name> <Value>test</Value> </AssignVariable> <!-- Create a variable named config.protocol --> <AssignVariable> <Name>config.protocol</Name> <Value>gopher</Value> </AssignVariable> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
ในนโยบายแรก องค์ประกอบ <AssignVariable>
จะสร้างและตั้งค่า 3 ชุด
ตัวแปรในคำขอ เอลิเมนต์ <Name>
แต่ละรายการจะระบุ
ชื่อตัวแปร และ <Value>
ระบุค่า
นโยบายที่ 2 ใช้องค์ประกอบ <AssignVariable>
เพื่ออ่านค่าและสร้างชิ้นงาน 3 ค่า
ตัวแปรใหม่ ได้แก่
<!-- Policy #2: Get variables from the request --> <AssignMessage continueOnError="false" enabled="true" name="get-variables"> <AssignTo createNew="false" transport="http" type="request"/> <!-- Get the value of myAppSecret and create a new variable, secret --> <AssignVariable> <Name>secret</Name> <Ref>myAppSecret</Ref> <Value>0</Value> </AssignVariable> <!-- Get the value of config.environment and create a new variable, environment --> <AssignVariable> <Name>environment</Name> <Ref>config.environment</Ref> <Value>default</Value> </AssignVariable> <!-- Get the value of config.protocol and create a new variable, protocol --> <AssignVariable> <Name>protocol</Name> <Ref>config.protocol</Ref> <Value>default</Value> </AssignVariable> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> </AssignMessage>
ในนโยบายที่ 2 องค์ประกอบ <Ref>
จะอ้างอิงตัวแปรแหล่งที่มา
และ <Name>
จะระบุชื่อของตัวแปรใหม่ หากตัวแปร
ที่ไม่มีสิทธิ์เข้าถึงที่อ้างอิงโดยองค์ประกอบ <Ref>
คุณสามารถใช้ค่า
ที่ระบุโดยองค์ประกอบ <Value>
หากต้องการลองใช้ชุดนโยบายนี้ ให้ทำดังนี้
- เพิ่มนโยบาย #1 และ #2 ลงในขั้นตอนคำขอ อย่าลืมใส่นโยบายที่ 1 ก่อนนโยบาย #2.
- เพิ่มนโยบายที่ 3 ในขั้นตอนการตอบกลับ
- นโยบายที่ 3 ใช้องค์ประกอบ
<Set>
เพื่อเพิ่มตัวแปรลงในคำตอบ ตัวอย่างต่อไปนี้สร้างเพย์โหลด XML ในการตอบกลับที่ Edge ส่งไปยังไคลเอ็นต์<!-- Policy #3: Add variables to the response --> <AssignMessage continueOnError="false" enabled="true" name="put-em-in-the-payload"> <DisplayName>put-em-in-the-payload</DisplayName> <Set> <Payload contentType="application/xml"> <wrapper> <secret>{secret}</secret> <config> <environment>{environment}</environment> <protocol>{protocol}</protocol> </config> </wrapper> </Payload> </Set> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="response"/> </AssignMessage>
โปรดทราบว่าไวยากรณ์ในการเข้าถึงตัวแปรโฟลว์ใน
<Set>
คือการรวมตัวแปรไว้ และวงเล็บปีกกาอย่าลืมตั้งค่าแอตทริบิวต์
contentType
ขององค์ประกอบ<Payload>
เป็น "application/xml" - ส่งคำขอไปยังพร็อกซี API เช่น
curl -vL https://ahamilton-eval-test.apigee.net/myproxy
หรือคุณอาจจับคู่ผลลัพธ์ผ่านยูทิลิตี เช่น
xmllint
เพื่อให้ XML จะแสดงในรูปแบบโครงสร้างที่ดีดังนี้curl -vL https://ahamilton-eval-test.apigee.net/myproxy | xmllint --format -
เนื้อหาของการตอบกลับควรมีลักษณะดังนี้
<wrapper> <secret>42</secret> <config> <environment>test</environment> <protocol>gopher</protocol> </config> </wrapper>
7: รับส่วนหัวการตอบกลับข้อความไฮไลต์บริการ
ในตัวอย่างต่อไปนี้ สมมติว่านโยบาย Servicecallout อยู่ในคําขอพร็อกซี API
และคำตอบของข้อความไฮไลต์มีส่วนหัวหลายรายการที่ใช้ชื่อเดียวกัน
(Set-Cookie
) สมมติว่าตัวแปรการตอบกลับของคำขอราคาเสนอบริการเป็นค่าเริ่มต้น
calloutResponse
นโยบายต่อไปนี้จะได้รับ Set-Cookie
ที่สอง
ส่วนหัว
<AssignMessage continueOnError="false" enabled="true" name="get-header"> <Set> <Payload contentType="application/json"> {"Cookies from Service Callout":" {calloutResponse.header.Set-Cookie.2}"} </Payload> </Set> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
หากต้องการแสดงรายการค่าส่วนหัวทั้งหมด ให้ใช้ตัวแปรต่อไปนี้แทน
{calloutResponse.header.Set-Cookie.values}
องค์ประกอบย่อยแต่ละรายการในการอ้างอิงนี้มีตัวอย่างเพิ่มเติม ดูตัวอย่างเพิ่มเติมได้ที่ ตัวอย่าง AssignMessage ใน GitHub
การอ้างอิงองค์ประกอบย่อย
ส่วนนี้จะอธิบายองค์ประกอบย่อยของ <AssignMessage>
<Add>
เพิ่มข้อมูลในคำขอหรือการตอบกลับซึ่งระบุโดย <AssignTo>
องค์ประกอบ <Add>
เพิ่มพร็อพเพอร์ตี้ใหม่ในข้อความที่ไม่มีอยู่ในต้นฉบับ
หากต้องการเปลี่ยนค่าของพร็อพเพอร์ตี้ที่มีอยู่ ให้ใช้ <Set>
ค่าเริ่มต้น | ไม่มี |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | ประเภทที่ซับซ้อน |
องค์ประกอบระดับบนสุด |
<AssignMessage>
|
องค์ประกอบย่อย |
<FormParams> <Headers> <QueryParams> |
องค์ประกอบ <Add>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Add> <FormParams> <FormParam name="formparam_name">formparam_value</FormParam> ... </FormParams> <Headers> <Header name="header_name">header_value</Header> ... </Headers> <QueryParams> <QueryParam name="queryparam_name">queryparam_value</QueryParam> ... </QueryParams> </Add> </AssignMessage>
ตัวอย่างที่ 1
ตัวอย่างต่อไปนี้ใช้องค์ประกอบ <FormParams>
เพื่อรับค่าของ
พารามิเตอร์สตริงคำค้นหา 3 ตัวจากคำขอเริ่มต้น แล้วตั้งเป็นพารามิเตอร์แบบฟอร์มใน
คำขอปลายทางเป้าหมาย:
<AssignMessage continueOnError="false" enabled="true" name="add-formparams-3"> <Add> <FormParams> <FormParam name="name">{request.queryparam.name}</FormParam> <FormParam name="zip">{request.queryparam.zipCode}</FormParam> <FormParam name="lang">{request.queryparam.lang}</FormParam> </FormParams> </Add> <AssignTo transport="http" type="request"/> </AssignMessage>
ตัวอย่างที่ 2
ตัวอย่างต่อไปนี้ใช้เอลิเมนต์ <Headers>
เพื่อเพิ่มแอตทริบิวต์
ส่วนหัว User-Agent
ไปยังคำขอปลายทางเป้าหมาย:
<AssignMessage continueOnError="false" enabled="true" name="add-headers-1"> <Add> <Headers> <Header name="user-agent">{request.user.agent}</Header> </Headers> </Add> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
ตัวอย่างที่ 3
ตัวอย่างต่อไปนี้ใช้เอลิเมนต์ <QueryParams>
เพื่อเพิ่มคำค้นหา 1 รายการ
ด้วยค่าคงที่ในคำขอ
<AssignMessage continueOnError="false" enabled="true" name="add-queryparams-1"> <Add> <QueryParams> <QueryParam name="myParam">42</QueryParam> </QueryParams> </Add> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
ตัวอย่างนี้ใช้ <Add>
ในขั้นตอนก่อนหน้าของคำขอ หากคุณดูผลลัพธ์ในเครื่องมือ
เช่น เครื่องมือการติดตาม คำขอไปยัง "http://httpbin.org/get" กลายเป็น
"http://httpbin.org/get?myParam=42".
องค์ประกอบย่อยของ <Add>
รองรับการแทนที่สตริงแบบไดนามิก หรือที่เรียกว่า
เทมเพลตข้อความ
<FormParams>
(ย่อยของ <Add>
)
เพิ่มพารามิเตอร์ฟอร์มใหม่ลงในข้อความคำขอ องค์ประกอบนี้ไม่มีผลต่อคำตอบ
ค่าเริ่มต้น | ไม่มี |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | อาร์เรย์ขององค์ประกอบ <FormParam> |
องค์ประกอบระดับบนสุด |
<Add>
|
องค์ประกอบย่อย |
<FormParam> |
องค์ประกอบ <FormParams>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Add> <FormParams> <FormParam name="formparam_name">formparam_value</FormParam> ... </FormParams> <AssignTo createNew="[true|false]" transport="http" type="[request|response]">destination_variable_name</AssignTo> </Add> </AssignMessage>
ตัวอย่างที่ 1
ตัวอย่างต่อไปนี้เพิ่มพารามิเตอร์แบบฟอร์มเดียว ("answer") และค่าคงที่ ("42") ลงใน คำขอ
<AssignMessage continueOnError="false" enabled="true" name="add-formparams-1"> <Add> <FormParams> <FormParam name="answer">42</FormParam> </FormParams> </Add> <AssignTo transport="http" type="request"></AssignTo> </AssignMessage>
ตัวอย่างที่ 2
ตัวอย่างต่อไปนี้ได้รับค่าของพารามิเตอร์สตริงคำค้นหา name
และ
เพิ่มลงในคำขอเป็นพารามิเตอร์แบบฟอร์ม:
<AssignMessage continueOnError="false" enabled="true" name="add-formparams-2"> <Add> <FormParam name="name">{request.queryparam.name}</FormParam> </Add> </AssignMessage>
โปรดทราบว่าตัวอย่างนี้ไม่ได้ระบุเป้าหมายที่มี <AssignTo>
นโยบายนี้จะเพิ่มส่วน
ไปยังคำขอเท่านั้น
ตัวอย่างที่ 3
ตัวอย่างต่อไปนี้จะเพิ่มพารามิเตอร์ฟอร์มหลายรายการในคำขอ
<AssignMessage continueOnError="false" enabled="true" name="add-formparams-3"> <Add> <FormParams> <FormParam name="name">{request.queryparam.name}</FormParam> <FormParam name="zip">{request.queryparam.zipCode}</FormParam> <FormParam name="lang">{request.queryparam.lang}</FormParam> </FormParams> </Add> <AssignTo transport="http" type="request"/> </AssignMessage>
ตัวอย่างนี้รับพารามิเตอร์สตริงการค้นหาจากคำขอต้นทาง แล้วเพิ่มพารามิเตอร์เหล่านั้น เป็นพารามิเตอร์แบบฟอร์มไปยังคำขอที่ส่งไปยังปลายทางเป้าหมาย
โดยคุณสามารถใช้เครื่องมือการติดตามเพื่อดูขั้นตอนได้ คุณจะเห็นว่าส่วนเนื้อหาของคำขอ มีข้อมูลแบบฟอร์มที่เข้ารหัส URL ซึ่งเดิมส่งเข้ามาเป็นสตริงการค้นหา ได้แก่
%7Busername%7D=nick&%7Bzip_code%7D=90210&%7Bdefault_language%7D=en
คุณจะใช้ <FormParams>
ได้ก็ต่อเมื่อมีคุณสมบัติตรงตามเกณฑ์ต่อไปนี้เท่านั้น
- กริยา HTTP: POST
- ประเภทข้อความ: คำขอ
- ข้อใดข้อหนึ่ง (หรือทั้ง 2 ข้อ) ต่อไปนี้
- ข้อมูลแบบฟอร์ม: ตั้งเป็นค่าบางค่า หรือ "" (สตริงว่างเปล่า) ตัวอย่างเช่น โดยมี
curl
เพิ่ม-d ""
ในคำขอ - ส่วนหัว
Content-Length
: ตั้งค่าเป็น 0 (หากไม่มีข้อมูลในคอลัมน์ คำขอเดิม หรือความยาวปัจจุบัน หน่วยเป็นไบต์) ตัวอย่างเช่น โดยมีcurl
เพิ่ม-H "Content-Length: 0"
ในคำขอ
- ข้อมูลแบบฟอร์ม: ตั้งเป็นค่าบางค่า หรือ "" (สตริงว่างเปล่า) ตัวอย่างเช่น โดยมี
เช่น
curl -vL -X POST -d "" -H "Content-Type: application/x-www-form-urlencoded" https://ahamilton-eval-test.apigee.net/am-test
เมื่อคุณเพิ่ม <FormParams>
Edge จะตั้งค่าส่วนหัว Content-Type
ของคำขอเป็น
"application/x-www-form-urlencoded" ก่อนส่งข้อความไปยังบริการเป้าหมาย
<Headers>
(ย่อยของ <Add>
)
เพิ่มส่วนหัวใหม่ไปยังคำขอหรือการตอบกลับที่ระบุ ซึ่งระบุโดย
<AssignTo>
ค่าเริ่มต้น | ไม่มี |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | อาร์เรย์ขององค์ประกอบ <Header> |
องค์ประกอบระดับบนสุด |
<Add>
|
องค์ประกอบย่อย |
<Header> |
องค์ประกอบ <Headers>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Add> <Headers> <Header name="header_name">header_value</Header> ... </Headers> </Add> </AssignMessage>
ตัวอย่างที่ 1
ตัวอย่างต่อไปนี้เพิ่มส่วนหัว user-agent
ในข้อความคำขอ และ
กำหนดค่าของตัวแปรโฟลว์ request.user.agent
ให้กับส่วนหัวนั้น
<AssignMessage continueOnError="false" enabled="true" name="add-headers-1"> <Add> <Headers> <Header name="user-agent">{request.user.agent}</Header> </Headers> </Add> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
<QueryParams>
(ย่อยของ <Add>
)
เพิ่มพารามิเตอร์การค้นหาใหม่ไปยังคำขอ องค์ประกอบนี้ไม่มีผลต่อการตอบกลับ
ค่าเริ่มต้น | ไม่มี |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | อาร์เรย์ขององค์ประกอบ <QueryParam> |
องค์ประกอบระดับบนสุด |
<Add>
|
องค์ประกอบย่อย |
<QueryParam> |
องค์ประกอบ <QueryParams>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Add> <QueryParams> <QueryParam name="queryparam_name">queryparam_value</QueryParam> ... </QueryParams> </Add> </AssignMessage>
ตัวอย่างที่ 1
ตัวอย่างต่อไปนี้จะเพิ่มพารามิเตอร์การค้นหา "myParam" ให้กับคำขอและกำหนดค่า "42" กับ:
<AssignMessage continueOnError="false" enabled="true" name="add-queryparams-1"> <Add> <QueryParams> <QueryParam name="myParam">42</QueryParam> </QueryParams> </Add> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
คุณจะใช้ <QueryParams>
ได้ก็ต่อเมื่อมีคุณสมบัติตรงตามเกณฑ์ต่อไปนี้เท่านั้น
- กริยา HTTP: GET
- ประเภทข้อความ: คำขอ
นอกจากนี้ คุณยังตั้งค่าพารามิเตอร์การค้นหาได้ก็ต่อเมื่อองค์ประกอบ <AssignTo>
แอตทริบิวต์ type
เป็นข้อความคำขอ การตั้งค่าในคำตอบจะไม่มีผล
หากคุณกำหนดอาร์เรย์ที่ว่างเปล่าของพารามิเตอร์การค้นหาในนโยบาย
(<Add><QueryParams/></Add>
) นโยบายนี้จะไม่เพิ่มการค้นหาใดๆ
พารามิเตอร์ เช่นเดียวกับการละเว้น <QueryParams>
<AssignTo>
กำหนดออบเจ็กต์ที่นโยบาย AssignMessage ดำเนินการ ตัวเลือกมีดังนี้
- ข้อความคำขอ:
request
ที่พร็อกซี API ได้รับ - ข้อความตอบกลับ:
response
ที่แสดงผลจากเซิร์ฟเวอร์เป้าหมาย - ข้อความที่กำหนดเอง: คำขอหรือออบเจ็กต์การตอบกลับที่กำหนดเอง
โปรดทราบว่าในบางกรณี คุณจะเปลี่ยนออบเจ็กต์ที่นโยบาย AssignMessage ออกไม่ได้
ตัวอย่างเช่น คุณไม่สามารถใช้ <Add>
หรือ <Set>
เพื่อเพิ่มหรือเปลี่ยนพารามิเตอร์การค้นหา
(<QueryParams>
) หรือพารามิเตอร์แบบฟอร์ม (<FormParams>
) ในการตอบกลับ คุณจะทำได้เพียง
จัดการพารามิเตอร์การค้นหาและพารามิเตอร์แบบฟอร์มในคำขอ
ค่าเริ่มต้น | ไม่มี |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | สตริง |
องค์ประกอบระดับบนสุด |
<AssignMessage>
|
องค์ประกอบย่อย | ไม่มี |
หากคุณไม่ระบุ <AssignTo>
นโยบายจะดำเนินการกับคำขอหรือการตอบกลับเริ่มต้น
ซึ่งอิงตามตําแหน่งที่นโยบายทํา หากนโยบายดำเนินการตามขั้นตอนการส่งคำขอ
มีผลต่อข้อความคำขอ หากเรียกใช้ในขั้นตอนการตอบกลับ นโยบายจะส่งผลต่อการตอบกลับ
โดยค่าเริ่มต้น
องค์ประกอบ <AssignTo>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <AssignTo createNew="[true|false]" transport="http" type="[request|response]">destination_variable_name</AssignTo> </AssignMessage>
ตัวอย่างที่ 1
ตัวอย่างต่อไปนี้ระบุว่าเป้าหมายเป็นคำขอเดิมที่จะส่งไปยัง ปลายทางเป้าหมาย:
<AssignMessage name="assignto-1"> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
โดยตั้งค่า createNew
เป็น "เท็จ" (ค่าเริ่มต้น) ตัวอย่างนี้ไม่ได้สร้าง
คำขอใหม่ การดำเนินการทั้งหมดในนโยบายนี้จะส่งผลต่อคำขอเดิม
ตัวอย่างที่ 2
ตัวอย่างต่อไปนี้จะสร้างออบเจ็กต์คำขอใหม่
<AssignMessage name="assignto-2"> <AssignTo createNew="true" transport="http" type="request"/> </AssignMessage>
เมื่อคุณสร้างคำขอหรือออบเจ็กต์การตอบกลับใหม่ องค์ประกอบอื่นๆ ของนโยบาย AssignMessage
(เช่น <Add>
, <Set>
และ <Set>
) ดำเนินการกับนโยบายใหม่
เป็นออบเจ็กต์คำขอ
คุณสามารถเข้าถึงออบเจ็กต์คำขอใหม่ในนโยบายอื่นๆ ได้ภายหลังในขั้นตอน หรือส่ง ส่งคำขอออบเจ็กต์ไปยังบริการภายนอกด้วยนโยบาย Servicecallout
ตัวอย่างที่ 3
ตัวอย่างต่อไปนี้จะสร้างออบเจ็กต์คำขอใหม่ชื่อ "MyRequestObject"
<AssignMessage name="assignto-2"> <AssignTo createNew="true" transport="http" type="request">MyRequestObject</AssignTo> </AssignMessage>
เมื่อคุณสร้างคำขอหรือออบเจ็กต์การตอบกลับใหม่ องค์ประกอบอื่นๆ ของนโยบาย AssignMessage
(เช่น <Add>
, <Set>
และ <Set>
) ดำเนินการกับนโยบายใหม่
เป็นออบเจ็กต์คำขอ
คุณสามารถเข้าถึงออบเจ็กต์คำขอใหม่ในนโยบายอื่นๆ ได้ภายหลังในขั้นตอน หรือส่ง ส่งคำขอออบเจ็กต์ไปยังบริการภายนอกด้วยนโยบาย Servicecallout
ตารางต่อไปนี้อธิบายแอตทริบิวต์ของ <AssignTo>
แอตทริบิวต์ | คำอธิบาย | จำเป็นหรือไม่ | ประเภท |
---|---|---|---|
createNew |
กำหนดว่านโยบายนี้จะสร้างข้อความใหม่หรือไม่เมื่อกำหนดค่า หากเป็น "จริง" นโยบายจะสร้างตัวแปรใหม่ประเภท
ที่ระบุโดย หากเป็น "เท็จ" นโยบายจะตอบสนองด้วยวิธีใดวิธีหนึ่งใน 2 วิธีนี้
หากไม่ได้ระบุ
|
ไม่บังคับ | บูลีน |
transport |
ระบุประเภทการส่งสำหรับประเภทคำขอหรือข้อความตอบกลับ ค่าเริ่มต้นคือ "http" (ค่าที่รองรับเพียงค่าเดียว) |
ไม่บังคับ | สตริง |
type |
ระบุประเภทของข้อความใหม่เมื่อ createNew เป็น "จริง" ถูกต้อง
ค่าคือ "request" หรือ "ตอบกลับ"
ค่าเริ่มต้นคือ "request" หากคุณไม่ระบุแอตทริบิวต์นี้ Edge จะสร้าง คำขอหรือการตอบกลับ ขึ้นอยู่กับว่านโยบายนี้จะดำเนินการในส่วนใดของขั้นตอนที่ |
ไม่บังคับ | สตริง |
<AssignVariable>
กำหนดค่าให้กับตัวแปรโฟลว์ปลายทาง (เช่น ตัวแปรที่ตัวแปรกำหนดโดยตัวแปร
นโยบาย AssignMessage) หากไม่มีตัวแปรโฟลว์ <AssignVariable>
จะสร้าง
ได้
ค่าเริ่มต้น | ไม่มี |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | ประเภทที่ซับซ้อน |
องค์ประกอบระดับบนสุด |
<AssignMessage>
|
องค์ประกอบย่อย |
<Name> (ต้องระบุ)<Ref> <Template> <Value> |
ค่าที่คุณกําหนดให้กับตัวแปรโฟลว์ปลายทางอาจเป็นค่าใดค่าหนึ่งต่อไปนี้
- สตริงตรงตัว: ใช้องค์ประกอบย่อย
<Value>
เพื่อระบุลิเทอรัล ของตัวแปรโฟลว์ปลายทาง - ตัวแปรโฟลว์: ใช้องค์ประกอบย่อย
<Ref>
เพื่อระบุค่าของ ตัวแปรโฟลว์ที่มีอยู่สําหรับตัวแปรโฟลว์ปลายทาง หากต้องการดูขั้นตอนทั้งหมด ตัวแปรที่ใช้เป็นแหล่งที่มาได้ โปรดดูการอ้างอิงตัวแปรโฟลว์ - เทมเพลตข้อความ: ใช้องค์ประกอบย่อย
<Template>
เพื่อระบุ เทมเพลตข้อความสำหรับ ของตัวแปรโฟลว์ปลายทาง
องค์ประกอบ <AssignVariable>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <AssignVariable> <Name>variable_name</Name> <Ref>source_variable</Ref> <Template>message_template</Template> or <Template ref='template_variable'></Template> <Value>variable_value</Value> </AssignVariable> </AssignMessage>
ใช้องค์ประกอบ <Ref>
เพื่อระบุตัวแปรแหล่งที่มา หาก
เข้าถึงตัวแปรที่ <Ref>
อ้างอิงไม่ได้ Edge ใช้ค่า
ที่ระบุโดยองค์ประกอบ <Value>
หากคุณให้คำจำกัดความ
<Template>
มีลำดับความสำคัญเหนือองค์ประกอบย่อยอื่นๆ
ตัวอย่างที่ 1
ตัวอย่างต่อไปนี้ตั้งค่าของตัวแปรใหม่ myvar
เป็นค่าลิเทอรัล
ค่า "42":
<AssignMessage name="assignvariable-1"> <AssignVariable> <Name>myvar</Name> <Value>42</Value> </AssignVariable> </AssignMessage>
ตัวอย่างที่ 2
ตัวอย่างต่อไปนี้กำหนดค่าของตัวแปรโฟลว์
request.header.user-agent
ไปยังตัวแปรโฟลว์ปลายทาง myvar
และค่าพารามิเตอร์การค้นหา country
ไปยังตัวแปรโฟลว์ปลายทาง
Country
:
<AssignMessage name="assignvariable-2"> <AssignVariable> <Name>myvar</Name> <Ref>request.header.user-agent</Ref> <Value>ErrorOnCopy</Value> </AssignVariable> <AssignVariable> <Name>Country</Name> <Ref>request.queryparam.country</Ref> <Value>ErrorOnCopy</Value> </AssignVariable> </AssignMessage>
หากการให้สิทธิ์ใดล้มเหลว Edge จะกำหนดค่า "ErrorOnCopy" แทน ถึง ตัวแปรโฟลว์ปลายทาง
ถ้าไม่มีตัวแปรโฟลว์ myvar
หรือ Country
<AssignVariable>
เป็นผู้สร้างรายการดังกล่าว
ตัวอย่างที่ 3
ตัวอย่างต่อไปนี้ใช้ <Template>
เอลิเมนต์ลูกสำหรับเชื่อมโยงตัวแปรบริบท 2 ตัว
ด้วยสตริงตามตัวอักษร (ขีดกลางสั้น) ระหว่างอักขระทั้งสอง ดังนี้
<AssignMessage name='template-1'> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <AssignVariable> <Name>my_destination_variable</Name> <Value>BADDBEEF</Value> <Template>{system.uuid}-{messageid}</Template> </AssignVariable> </AssignMessage>
การใช้งานทั่วไปของ <AssignVariable>
คือการกำหนดค่าเริ่มต้นสำหรับพารามิเตอร์การค้นหา ส่วนหัว หรือ
ค่าอื่นๆ ที่สามารถส่งไปพร้อมกับคำขอได้ คุณสามารถทำได้โดยใช้ทั้ง
องค์ประกอบย่อย <Ref>
และ <Value>
สำหรับข้อมูลเพิ่มเติม
ข้อมูล โปรดดูตัวอย่าง <Ref>
<Name>
(ย่อยของ <AssignVariable>
)
ระบุชื่อตัวแปรโฟลว์ปลายทาง (เช่น ตัวแปรที่ตั้งค่าตาม
นโยบาย AssignMessage) ถ้าไม่มีตัวแปรที่มีชื่อใน <AssignVariable>
ค่า
ระบบจะสร้างนโยบายดังกล่าวขึ้นมา 1 รายการโดยใช้ชื่อดังกล่าว
ค่าเริ่มต้น | ไม่มี |
ต้องระบุหรือไม่ | ต้องระบุ |
ประเภท | สตริง |
องค์ประกอบระดับบนสุด |
<AssignVariable>
|
องค์ประกอบย่อย | ไม่มี |
องค์ประกอบ <Name>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <AssignVariable> <Name>variable_name</Name> </AssignVariable> </AssignMessage>
ตัวอย่างที่ 1
ตัวอย่างต่อไปนี้ระบุตัวแปรปลายทางเป็น myvar
และทําการตั้งค่า
กับค่าลิเทอรัล "42":
<AssignMessage name="assignvariable-1"> <AssignVariable> <Name>myvar</Name> <Value>42</Value> </AssignVariable> </AssignMessage>
หากไม่มี myvar
<AssignVariable>
เป็นผู้สร้าง
<Ref>
(ย่อยของ <AssignVariable>
)
ระบุแหล่งที่มาของการมอบหมายเป็นตัวแปรโฟลว์ ตัวแปรโฟลว์อาจเป็น ตัวแปรโฟลว์ที่กําหนดไว้ล่วงหน้า (ดังที่แสดงในการอ้างอิงตัวแปรโฟลว์) หรือตัวแปรโฟลว์ที่กําหนดเอง ที่คุณสร้างขึ้น
ระบบจะตีความค่าของ <Ref>
เป็นตัวแปรโฟลว์เสมอ คุณไม่สามารถ
ระบุสตริงลิเทอรัลเป็น
หากต้องการกำหนดค่าสตริงตามตัวอักษร ให้ใช้องค์ประกอบ <Value>
แทน
ค่าเริ่มต้น | ไม่มี |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | สตริง |
องค์ประกอบระดับบนสุด |
<AssignVariable>
|
องค์ประกอบย่อย | ไม่มี |
เมื่อคุณระบุตัวแปรโฟลว์ด้วย <Ref>
ให้ละเว้น
วงเล็บปิด "{}" ที่ปกติแล้วคุณจะใช้อ้างอิงตัวแปรโฟลว์ ตัวอย่างเช่น
เพื่อตั้งค่าตัวแปรใหม่เป็นค่าของโฟลว์ client.host
ตัวแปร:
Do this (no brackets): <Ref>client.host</Ref> Do NOT do this (brackets): <Ref>{client.host}</Ref>
หากต้องการกําหนดค่าเริ่มต้นสำหรับตัวแปรโฟลว์ปลายทาง ให้ใช้ <Value>
ร่วมกับ <Ref>
หากตัวแปรโฟลว์ที่ระบุ
<Ref>
ไม่มีอยู่ อ่านไม่ได้ หรือเป็นค่าว่าง แล้ว Edge จะกำหนดค่า
<Value>
ไปยังตัวแปรโฟลว์ปลายทางแทน
องค์ประกอบ <Ref>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <AssignVariable> <Name>variable_name</Name> <Ref>source_variable</Ref> </AssignVariable> </AssignMessage>
ตัวอย่างที่ 1
ตัวอย่างต่อไปนี้กำหนดค่าของตัวแปรโฟลว์
request.header.user-agent
ไปยังตัวแปรโฟลว์ปลายทาง myvar
และ
ค่าพารามิเตอร์การค้นหา country
เป็นตัวแปร Country
<AssignMessage name="assignvariable-4"> <AssignVariable> <Name>myvar</Name> <Ref>request.header.user-agent</Ref> </AssignVariable> <AssignVariable> <Name>Country</Name> <Ref>request.queryparam.country</Ref> </AssignVariable> </AssignMessage>
ในตัวอย่างนี้ Edge ไม่ได้ระบุค่าเริ่มต้น (หรือค่าสำรอง) สำหรับ งาน
ตัวอย่างที่ 2
ตัวอย่างต่อไปนี้กำหนดค่าของตัวแปรโฟลว์ request.header.user-agent
ไปยังตัวแปรโฟลว์ปลายทาง myvar
และค่า
ของพารามิเตอร์การค้นหา country
เป็นตัวแปร Country
<AssignMessage name="assignvariable-2"> <AssignVariable> <Name>myvar</Name> <Ref>request.header.user-agent</Ref> <Value>ErrorOnCopy</Value> </AssignVariable> <AssignVariable> <Name>Country</Name> <Ref>request.queryparam.country</Ref> <Value>ErrorOnCopy</Value> </AssignVariable> </AssignMessage>
ในตัวอย่างนี้ หากค่าของตัวแปรโฟลว์ request.header.user-agent
หรือ Country
Edge กำหนดเป็น Null, อ่านไม่ได้ หรือมีรูปแบบไม่ถูกต้อง
ค่า "ErrorOnCopy" ไปยังตัวแปรใหม่
ตัวอย่างที่ 3
กรณีการใช้งานทั่วไปสำหรับ <AssignVariable>
คือการกำหนดค่าเริ่มต้นของการค้นหา
พารามิเตอร์ ส่วนหัว หรือค่าอื่นๆ ที่ส่งไปกับคำขอได้ ตัวอย่างเช่น คุณสามารถสร้าง
พร็อกซี Weather API ที่คำขอใช้พารามิเตอร์การค้นหาเดี่ยวชื่อ "w" ช่วงเวลานี้
มีรหัสของเมืองที่คุณต้องการให้สภาพอากาศ URL ของคำขอมี
แบบฟอร์ม:
http://myCO.com/v1/weather/forecastrss?w=city_ID
หากต้องการกำหนดค่าเริ่มต้นสำหรับ "w" ให้สร้างนโยบาย AssignMessage อย่างเช่น ดังต่อไปนี้:
<AssignMessage continueOnError="false" enabled="true" name="assignvariable-3"> <AssignTo createNew="false" transport="http" type="request"/> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignVariable> <Name>request.queryparam.w</Name> <Ref>request.queryparam.w</Ref> <Value>12797282</Value> </AssignVariable> </AssignMessage>
ในตัวอย่างนี้ <AssignVariable>
จะได้รับค่า request.queryparam.w
แล้วกำหนดให้กับตัวเอง หากตัวแปรโฟลว์เป็นค่าว่าง หมายความว่าตัวแปร "w" พารามิเตอร์การค้นหาเดิมคือ
ออกจากคำขอ ตัวอย่างนี้จะใช้ค่าเริ่มต้นจาก
<Value>
คุณจึงส่งคำขอไปยัง API นี้ได้
พร็อกซีที่ละเว้น "w" พารามิเตอร์การค้นหา:
http://myCO.com/v1/weather/forecastrss
...และยังคงให้พร็อกซี API ส่งคืนผลลัพธ์ที่ถูกต้อง
ค่าของ <Ref>
ต้องเป็นค่าที่แตกต่างจากเมื่อใช้ <Value>
ตัวแปร เช่น พร็อพเพอร์ตี้ของ request
, response
หรือ
ออบเจ็กต์ target
ค่านี้จะเป็นตัวแปรโฟลว์ที่กำหนดเองที่คุณสร้างขึ้นได้ด้วย
หากคุณระบุตัวแปรโฟลว์ที่ไม่มีอยู่สำหรับค่าของ <Ref>
และค่าของ <IgnoreUnresolvedVariables>
คือ "true" Edge แสดงข้อผิดพลาด
<Template>
(ย่อยของ <AssignVariable>
)
ระบุ เทมเพลตข้อความ ข้อความ เทมเพลตช่วยให้คุณใช้แทนสตริงตัวแปรเมื่อนโยบายทำงาน และ สามารถรวมสตริงตามตัวอักษรกับชื่อตัวแปรที่หุ้มด้วยปีกกา วงเล็บปีกกา นอกจากนี้ เทมเพลตข้อความ สนับสนุน ฟังก์ชัน Escape เช่น Escape และแปลงกรณี
ใช้แอตทริบิวต์ ref
เพื่อระบุตัวแปรโฟลว์ที่ค่าของตัวแปร
คือเทมเพลตข้อความ ตัวอย่างเช่น คุณสามารถจัดเก็บเทมเพลตข้อความเป็น
แอตทริบิวต์ที่กำหนดเอง
ในแอปนักพัฒนาซอฟต์แวร์ เมื่อ Edge ระบุแอปของนักพัฒนาแอปหลังจากยืนยันคีย์ API
หรือโทเค็นการรักษาความปลอดภัย (ผ่านนโยบายเพิ่มเติม) <AssignVariable>
สามารถใช้เทมเพลตข้อความจากแอตทริบิวต์ที่กำหนดเองของแอป ซึ่งมีให้
เป็นตัวแปรโฟลว์จากนโยบายความปลอดภัย ตัวอย่างต่อไปนี้จะถือว่าข้อความ
เทมเพลตจะปรากฏในแอตทริบิวต์ลูกค้าที่ชื่อว่า message_template
ใน
แอปนักพัฒนาซอฟต์แวร์ที่ทำการเรียก API ซึ่งใช้ นโยบาย VerifyAPIKey ในการยืนยัน
คีย์ API ของแอป
<AssignVariable ref='verifyapikey.myVerifyAPIKeyPolicy.app.name.message_template'/>
ค่าเริ่มต้น | ไม่มี |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | สตริง |
องค์ประกอบระดับบนสุด |
<AssignVariable>
|
องค์ประกอบย่อย | ไม่มี |
องค์ประกอบ <Template>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <AssignVariable> <Template>message_template</Template> or <Template ref='template_variable'></Template> </AssignVariable> </AssignMessage>
ตัวอย่างที่ 1
ตัวอย่างต่อไปนี้ใช้ไวยากรณ์เทมเพลตข้อความเพื่อเชื่อมโยงตัวแปรบริบท 2 ตัวเข้าด้วยกัน ด้วยสตริงตามตัวอักษร (ขีดกลางสั้น) ระหว่างอักขระทั้งสอง ดังนี้
<AssignMessage name='template-1'> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <AssignVariable> <Name>my_destination_variable</Name> <Value>BADDBEEF</Value> <Template>{system.uuid}-{messageid}</Template> </AssignVariable> </AssignMessage>
ตัวอย่างที่ 2
ตัวอย่างต่อไปนี้ระบุตัวแปรโฟลว์ โดยที่ค่าของตัวแปร เป็นเทมเพลตข้อความที่กำหนดไว้ล่วงหน้า ใช้ตัวเลือกนี้หากคุณต้องการแทรกเทมเพลตที่กำหนดไว้ล่วงหน้าที่ โดยไม่ต้องแก้ไขนโยบาย
<AssignMessage name='template-2'> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <AssignVariable> <Name>my_destination_variable</Name> <Value>BADDBEEF</Value> <Template ref='my_template_variable'/> </AssignVariable> </AssignMessage>
ตัวอย่างที่ 3
ตัวอย่างต่อไปนี้ระบุตัวแปรโฟลว์และค่าข้อความ ในกรณีนี้ หาก
ตัวแปรที่อ้างอิงไม่ใช่ค่าว่าง และจะใช้ค่านั้นเป็นเทมเพลต หากการอ้างอิง
เป็นค่าว่าง ตามด้วยค่าข้อความ (ในกรณีนี้คือ {system.uuid}-{messageid}
)
เป็นเทมเพลต รูปแบบนี้มีประโยชน์ในการ "ลบล้าง" value โดยที่
ในบางกรณีคุณต้องการลบล้างเทมเพลตเริ่มต้น (ส่วนที่เป็นข้อความ) ด้วยค่า
ที่ตั้งไว้แบบไดนามิก เช่น ข้อความแบบมีเงื่อนไขอาจใช้มูลค่า
จากแมปคีย์-ค่า แล้วกำหนดตัวแปรที่อ้างอิงเป็นค่าดังกล่าว
<AssignMessage name='template-2'> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <AssignVariable> <Name>my_destination_variable</Name> <Value>BADDBEEF</Value> <Template ref='my_variable'>{system.uuid}-{messageid}</Template> </AssignVariable> </AssignMessage>
<Value>
(ย่อยของ <AssignVariable>
)
กําหนดค่าของชุดตัวแปรโฟลว์ปลายทางด้วย <AssignVariable>
ค่าจะถูกตีความเป็นสตริงลิเทอรัลเสมอ คุณจะใช้ตัวแปรโฟลว์เป็นค่าไม่ได้
หากคุณใส่ค่าไว้ในวงเล็บเหลี่ยม ("{}") หากต้องการใช้ตัวแปรโฟลว์ ให้ใช้ <Ref>
แทน
ค่าเริ่มต้น | ไม่มี |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | สตริง |
องค์ประกอบระดับบนสุด |
<AssignVariable>
|
องค์ประกอบย่อย | ไม่มี |
เมื่อใช้ร่วมกับองค์ประกอบ <Ref>
<Value>
ทำหน้าที่เป็นค่าเริ่มต้น (หรือสำรอง) หากไม่ได้ระบุ <Ref>
ค่าจะเป็น
แก้ไขไม่ได้หรือไม่เป็นค่าว่าง ระบบจะใช้ค่า <Value>
องค์ประกอบ <Value>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <AssignVariable> <Name>variable_name</Name> <Value>variable_value</Value> </AssignVariable> </AssignMessage>
ตัวอย่างที่ 1
ตัวอย่างต่อไปนี้ตั้งค่าของตัวแปรโฟลว์ปลายทาง myvar
กับค่าลิเทอรัล "42":
<AssignMessage name="assignvariable-1"> <AssignVariable> <Name>myvar</Name> <Value>42</Value> </AssignVariable> </AssignMessage>
ตัวอย่างที่ 2
ตัวอย่างต่อไปนี้กำหนดค่าของตัวแปรโฟลว์
request.header.user-agent
ไปยังตัวแปรโฟลว์ myvar
และค่า
ของพารามิเตอร์การค้นหา country
เป็นตัวแปร Country
<AssignMessage name="assignvariable-2"> <AssignVariable> <Name>myvar</Name> <Ref>request.header.user-agent</Ref> <Value>ErrorOnCopy</Value> </AssignVariable> <AssignVariable> <Name>Country</Name> <Ref>request.queryparam.country</Ref> <Value>ErrorOnCopy</Value> </AssignVariable> </AssignMessage>
หากการมอบหมายใดล้มเหลว <AssignVariable>
จะกำหนดค่า "ErrorOnCopy" แทน ถึง
ตัวแปรโฟลว์ปลายทาง
<Copy>
คัดลอกค่าจากข้อความที่ระบุโดยแอตทริบิวต์ source
กับข้อความที่ระบุโดยองค์ประกอบ <AssignTo>
หากคุณไม่ระบุ
เป้าหมายที่มี <AssignTo>
แล้วนโยบายนี้จะคัดลอกค่าไปยังคำขอหรือการตอบกลับ
โดยขึ้นอยู่กับตำแหน่งที่ดำเนินการในนโยบายนี้
ค่าเริ่มต้น | ไม่มี |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | สตริง |
องค์ประกอบระดับบนสุด |
<AssignMessage>
|
องค์ประกอบย่อย |
<FormParams> <Headers> <Path> <Payload> <QueryParams> <ReasonPhrase> <StatusCode> <Verb> <Version> |
องค์ประกอบ <Copy>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage
continueOnError="[false|true]"
enabled="[true|false]"
name="policy_name" >
<Copy source="[request|response]">
<!-- Can also be an empty array (<FormParams/>) -->
<FormParams>
<FormParam name="formparam_name">formparam_value</FormParam>
...
</FormParams>
<!-- Can also be an empty array (<Headers/>) -->
<Headers>
<Header name="header_name">header_value</Header>
...
</Headers>
<Path>[false|true]</Path>
<Payload>[false|true]</Payload>
<!-- Can also be an empty array (<QueryParams/>) -->
<QueryParams>
<QueryParam name="queryparam_name">queryparam_value</QueryParam>
...
</QueryParams>
<ReasonPhrase>[false|true]</ReasonPhrase>
<StatusCode>[false|true]</StatusCode>
<Verb>[false|true]</Verb>
<Version>[false|true]</Version>
</Copy>
<!-- Used as the destination for the <Copy>
values -->
<AssignTo createNew="[true|false]" transport="http"
type="[request|response]">destination_variable_name</AssignTo>
</AssignMessage>
ตัวอย่างที่ 1
ตัวอย่างต่อไปนี้คัดลอกส่วนหัว พารามิเตอร์ฟอร์ม 3 รายการ เส้นทาง และคำค้นหาทั้งหมด พารามิเตอร์ จากคำขอไปยังคำขอใหม่ที่กำหนดเอง ดังนี้
<AssignMessage continueOnError="false" enabled="true" name="copy-1"> <Copy source="request"> <Headers> <Header name="Header_Name_1">Header value 1</Header> </Headers> <FormParams> <FormParam name="Form_Param_Name_1">Form param value 1</FormParam> <FormParam name="Form_Param_Name_2">Form param value 1</FormParam> <FormParam name="Form_Param_Name_3">Form param value 1</FormParam> </FormParams> <Payload>false</Payload> <Path>true</Path> <QueryParams/> <ReasonPhrase>false</ReasonPhrase> <StatusCode>false</StatusCode> <Verb>false</Verb> <Version>false</Version> </Copy> <AssignTo createNew="true" transport="http" type="request"/> </AssignMessage>
องค์ประกอบ <Copy>
มีแอตทริบิวต์ต่อไปนี้
แอตทริบิวต์ | คำอธิบาย | จำเป็นหรือไม่ | ประเภท |
---|---|---|---|
source |
ระบุออบเจ็กต์ต้นฉบับของสำเนา
|
ไม่บังคับ | สตริง |
<FormParams>
(ย่อยของ <Copy>
)
คัดลอกพารามิเตอร์แบบฟอร์มจากคำขอที่ระบุโดย
แอตทริบิวต์ source
ขององค์ประกอบ <Copy>
ไปยังคำขอ
ที่ระบุโดยองค์ประกอบ <AssignTo>
องค์ประกอบนี้ไม่มีผลต่อ
คำตอบ
ค่าเริ่มต้น | ไม่มี |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | อาร์เรย์ขององค์ประกอบ <FormParam> หรืออาร์เรย์ว่าง |
องค์ประกอบระดับบนสุด |
<Copy>
|
องค์ประกอบย่อย |
<FormParam> |
องค์ประกอบ <FormParams>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Copy source="[request|response]"> <!-- Can also be an empty array (<FormParams/>) --> <FormParams> <FormParam name="formparam_name">formparam_value</FormParam> ... </FormParams> </Copy> </AssignMessage>
ตัวอย่างที่ 1
ตัวอย่างต่อไปนี้คัดลอกพารามิเตอร์ฟอร์มเดียวจากคำขอไปยัง คำขอที่กำหนดเอง "MyCustomRequest":
<AssignMessage name="copy-formparams-1"> <Copy source="request"> <FormParams> <FormParam name="paramName">Form param value 1</FormParam> </FormParams> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
ตัวอย่างที่ 2
ตัวอย่างต่อไปนี้คัดลอกพารามิเตอร์ฟอร์มทั้งหมดไปยังคำขอที่กำหนดเอง "MyCustomRequest":
<AssignMessage name="copy-formparams-2"> <Copy source="request"> <FormParams/> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
ตัวอย่างที่ 3
ตัวอย่างต่อไปนี้คัดลอกพารามิเตอร์ฟอร์ม 3 รายการไปยังคำขอที่กำหนดเอง "MyCustomRequest":
<AssignMessage name="copy-formparams-3"> <Copy source="request"> <FormParams> <FormParam name="paramName1"/> <FormParam name="paramName2"/> <FormParam name="paramName3"/> </FormParams> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
ตัวอย่าง 4
หากมีพารามิเตอร์แบบฟอร์มหลายรายการที่มีชื่อเดียวกัน ให้ใช้ไวยากรณ์ต่อไปนี้
<AssignMessage name="copy-formparams-4"> <Copy source="request"> <FormParams> <FormParam name="f1"/> <FormParam name="f2"/> <FormParam name="f3.2"/> </FormParams> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
ตัวอย่างนี้คัดลอก "f1", "f2" และค่าที่สองของ "f3" หากเป็น "f3" มีเพียงรายการเดียว จะไม่มีการคัดลอก
คุณจะใช้ <FormParams>
ได้ก็ต่อเมื่อมีคุณสมบัติตรงตามเกณฑ์ต่อไปนี้เท่านั้น
- กริยา HTTP: POST
- ประเภทข้อความ: การตอบกลับ
- ข้อใดข้อหนึ่ง (หรือทั้ง 2 ข้อ) ต่อไปนี้
- ข้อมูลแบบฟอร์ม: ตั้งเป็นค่าบางค่า หรือ "" (สตริงว่างเปล่า) ตัวอย่างเช่น โดยมี
curl
เพิ่ม-d ""
ในคำขอ - ส่วนหัว
Content-Length
: ตั้งค่าเป็น 0 (หากไม่มีข้อมูลในคอลัมน์ คำขอเดิม หรือไม่เช่นนั้น ก็หมายถึงความยาวปัจจุบัน ตัวอย่างเช่น โดยมีcurl
เพิ่ม-H "Content-Length: 0"
ในคำขอ
- ข้อมูลแบบฟอร์ม: ตั้งเป็นค่าบางค่า หรือ "" (สตริงว่างเปล่า) ตัวอย่างเช่น โดยมี
เมื่อคุณคัดลอก <FormParams>
<Copy>
จะตั้งค่า Content-Type
ของข้อความเป็น
"application/x-www-form-urlencoded" ก่อนส่งข้อความไปยังบริการเป้าหมาย
<Headers>
(ย่อยของ <Copy>
)
คัดลอกส่วนหัว HTTP จากคำขอหรือข้อความตอบกลับที่ระบุโดย
แอตทริบิวต์ source
ขององค์ประกอบ <Copy>
ไปยังคำขอ
หรือข้อความตอบกลับที่ระบุโดยองค์ประกอบ <AssignTo>
ค่าเริ่มต้น | ไม่มี |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | อาร์เรย์ขององค์ประกอบ <Header> หรืออาร์เรย์ว่าง |
องค์ประกอบระดับบนสุด |
<Copy>
|
องค์ประกอบย่อย |
<Header> |
องค์ประกอบ <Headers>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Copy source="[request|response]"> <!-- Can also be an empty array (<Headers/>) --> <Headers> <Header name="header_name">header_value</Header> ... </Headers> </Copy> </AssignMessage>
ตัวอย่างที่ 1
ตัวอย่างต่อไปนี้คัดลอกส่วนหัว user-agent
จากคำขอไปยัง
ออบเจ็กต์คำขอใหม่ที่กำหนดเอง:
<AssignMessage name="copy-headers-1"> <Copy source="request"> <Headers> <Header name="user-agent"/> </Headers> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
ตัวอย่างที่ 2
หากต้องการคัดลอกส่วนหัวทั้งหมด ให้ใช้องค์ประกอบ <Headers>
ที่ว่างเปล่าดังตัวอย่างต่อไปนี้
แสดง:
<AssignMessage name="copy-headers-2"> <Copy source="request"> <Headers/> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
ตัวอย่างที่ 3
หากมีส่วนหัวหลายรายการที่มีชื่อเดียวกัน ให้ใช้ไวยากรณ์ต่อไปนี้
<AssignMessage name="copy-headers-3"> <Copy source="request"> <Headers> <Header name="h1"/> <Header name="h2"/> <Header name="h3.2"/> </Headers> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
ตัวอย่างนี้คัดลอก "h1", "h2" และค่าที่สองของ "h3" หากเป็น "h3" มีเพียงรายการเดียว จะไม่มีการคัดลอก
<Path>
(ย่อยของ <Copy>
)
กำหนดว่าควรคัดลอกเส้นทางจากคำขอต้นทางไปยังปลายทางหรือไม่ อีกครั้ง องค์ประกอบนี้ไม่มีผลต่อการตอบกลับ
หากเป็น "จริง" นโยบายนี้จะคัดลอกเส้นทางจากข้อความคำขอที่ระบุโดย
แอตทริบิวต์ source
ขององค์ประกอบ <Copy>
ไปยังคำขอ
ข้อความที่องค์ประกอบ <AssignTo>
ระบุไว้
ค่าเริ่มต้น | เท็จ |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | บูลีน |
องค์ประกอบระดับบนสุด |
<Copy>
|
องค์ประกอบย่อย | ไม่มี |
องค์ประกอบ <Path>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Copy source="[request|response]"> <Path>[false|true]</Path> </Copy> </AssignMessage>
ตัวอย่างที่ 1
ตัวอย่างต่อไปนี้ระบุว่านโยบาย AssignMessage ควรคัดลอกเส้นทางจากแหล่งที่มา ไปยังออบเจ็กต์คำขอใหม่ที่กำหนดเอง
<AssignMessage name="copy-path-1"> <Copy source="request"> <Path>true</Path> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
คุณจะใช้ <Path>
ได้ก็ต่อเมื่อมีคุณสมบัติตรงตามเกณฑ์ต่อไปนี้เท่านั้น
- ประเภทข้อความ: คำขอ
<Payload>
(ย่อยของ <Copy>
)
กำหนดว่าควรคัดลอกเพย์โหลดจากต้นทางไปยังปลายทางหรือไม่ ต้นทางและปลายทางอาจเป็นคําขอหรือการตอบกลับก็ได้
หากเป็น "true" นโยบายนี้จะคัดลอกเพย์โหลดจากข้อความที่ระบุโดย
แอตทริบิวต์ source
ขององค์ประกอบ <Copy>
ไปยังข้อความ
ที่ระบุโดยองค์ประกอบ <AssignTo>
ค่าเริ่มต้น | เท็จ |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | บูลีน |
องค์ประกอบระดับบนสุด |
<Copy>
|
องค์ประกอบย่อย | ไม่มี |
องค์ประกอบ <Payload>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Copy source="[request|response]"> <Payload>[false|true]</Payload> </Copy> </AssignMessage>
ตัวอย่างที่ 1
ตัวอย่างต่อไปนี้ตั้งค่า <Payload>
เป็น "จริง" เพื่อให้เพย์โหลดคำขอ
ที่คัดลอกจากคำขอไปยังการตอบกลับ:
<AssignMessage name="copy-payload-1"> <Copy source="request"> <Payload>true</Payload> </Copy> <AssignTo createNew="true" transport="http" type="response"/> </AssignMessage>
<QueryParams>
(ย่อยของ <Copy>
)
คัดลอกพารามิเตอร์สตริงคำค้นหาจากคำขอที่ระบุโดย
แอตทริบิวต์ source
ขององค์ประกอบ <Copy>
ไปยังคำขอที่ระบุ
ตามองค์ประกอบ <AssignTo>
องค์ประกอบนี้ไม่มีผลต่อการตอบกลับ
ค่าเริ่มต้น | ไม่มี |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | อาร์เรย์ขององค์ประกอบ <QueryParam> หรืออาร์เรย์ว่าง |
องค์ประกอบระดับบนสุด |
<QueryParam>
|
องค์ประกอบย่อย | ไม่มี |
องค์ประกอบ <QueryParams>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Copy source="[request|response]"> <!-- Can also be an empty array (<QueryParams/>) --> <QueryParams> <QueryParam name="queryparam_name">queryparam_value</QueryParam> ... </QueryParams> </Copy> </AssignMessage>
ตัวอย่างที่ 1
ตัวอย่างต่อไปนี้คัดลอก "my_param" พารามิเตอร์การค้นหาจากคำขอไปยัง ออบเจ็กต์คำขอที่กำหนดเอง:
<AssignMessage name="copy-queryparams-1"> <Copy source="request"> <QueryParams> <QueryParam name="my_param"/> </QueryParams> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
ตัวอย่างที่ 2
ตัวอย่างต่อไปนี้คัดลอกพารามิเตอร์การค้นหาทั้งหมดจากคำขอไปยังพารามิเตอร์ใหม่ที่กําหนดเอง ออบเจ็กต์คำขอ:
<AssignMessage name="copy-queryparams-2"> <Copy source="request"> <QueryParams/> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
ตัวอย่างที่ 3
หากมีพารามิเตอร์การค้นหาหลายรายการที่มีชื่อเดียวกัน ให้ใช้ไวยากรณ์ต่อไปนี้
<AssignMessage name="copy-queryparams-3"> <Copy source="request"> <QueryParams> <QueryParam name="qp1"/> <QueryParam name="qp2"/> <QueryParam name="qp3.2"/> </QueryParams> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
ตัวอย่างนี้คัดลอก "qp1", "qp2" และค่าที่สองของ "qp3" หากเป็น "qp3" มีเฉพาะ ค่าเดียว จะไม่มีการคัดลอก
คุณจะใช้ <QueryParams>
ได้ก็ต่อเมื่อมีคุณสมบัติตรงตามเกณฑ์ต่อไปนี้เท่านั้น
- กริยา HTTP: GET
- ประเภทข้อความ: คำขอ
<ReasonPhrase>
(ย่อยของ <Copy>
)
กำหนดว่าควรคัดลอกวลีเหตุผลจากคำตอบที่เป็นแหล่งที่มาไปยัง ปลายทาง องค์ประกอบนี้ไม่มีผลต่อคำขอ
หากเป็น "จริง" นโยบายนี้จะคัดลอก ReasonPhrase
จากการตอบกลับ
ที่ระบุโดยแอตทริบิวต์ source
ขององค์ประกอบ <Copy>
ไปยังการตอบกลับ
ที่ระบุโดยองค์ประกอบ <AssignTo>
ค่าเริ่มต้น | เท็จ |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | บูลีน |
องค์ประกอบระดับบนสุด |
<Copy>
|
องค์ประกอบย่อย | ไม่มี |
องค์ประกอบ <ReasonPhrase>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Copy source="[request|response]"> <ReasonPhrase>[false|true]</ReasonPhrase> </Copy> </AssignMessage>
ตัวอย่างที่ 1
ตัวอย่างต่อไปนี้ตั้งค่า <ReasonPhrase>
เป็น "จริง" ซึ่งทำให้ <Copy>
เพื่อคัดลอกวลีเหตุผลจากคำตอบเริ่มต้นไปยังออบเจ็กต์คำตอบที่กำหนดเอง ดังนี้
<AssignMessage name="copy-reasonphrase-1"> <Copy source="response"> <ReasonPhrase>true</ReasonPhrase> </Copy> <AssignTo createNew="trie" transport="http" type="response">MyCustomResponse</AssignTo> </AssignMessage>
คุณจะใช้ <ReasonPhrase>
ได้ก็ต่อเมื่อมีคุณสมบัติตรงตามเกณฑ์ต่อไปนี้เท่านั้น
- ประเภทข้อความ: การตอบกลับ
<StatusCode>
(ย่อยของ <Copy>
)
กำหนดว่าจะคัดลอกรหัสสถานะจากการตอบกลับต้นทางไปยังปลายทางหรือไม่ คำตอบ องค์ประกอบนี้ไม่มีผลต่อคำขอ
หากเป็น "จริง" นโยบายนี้จะคัดลอกรหัสสถานะจากข้อความตอบกลับที่ระบุโดย
แอตทริบิวต์ source
ขององค์ประกอบ <Copy>
ไปยังการตอบกลับ
ข้อความที่องค์ประกอบ <AssignTo>
ระบุไว้
ค่าเริ่มต้น | เท็จ |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | บูลีน |
องค์ประกอบระดับบนสุด |
<Copy>
|
องค์ประกอบย่อย | ไม่มี |
องค์ประกอบ <StatusCode>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Copy source="[request|response]"> <StatusCode>[false|true]</StatusCode> </Copy> </AssignMessage>
ตัวอย่างที่ 1
ตัวอย่างต่อไปนี้ตั้งค่า <StatusCode>
เป็น "จริง" ซึ่งจะคัดลอกรหัสสถานะ
จากออบเจ็กต์การตอบกลับที่เป็นค่าเริ่มต้นไปยังออบเจ็กต์การตอบกลับใหม่ที่กำหนดเอง
<AssignMessage name="copy-statuscode-1"> <Copy source="response"> <StatusCode>true</StatusCode> </Copy> <AssignTo createNew="true" transport="http" type="response">MyCustomResponse</AssignTo> </AssignMessage>
คุณจะใช้ <StatusCode>
ได้ก็ต่อเมื่อมีคุณสมบัติตรงตามเกณฑ์ต่อไปนี้เท่านั้น
- ประเภทข้อความ: การตอบกลับ
การใช้งานทั่วไปของ <StatusCode>
คือเพื่อให้มั่นใจว่าการตอบสนองของพร็อกซีมีสถานะเดียวกัน
เป็นการตอบสนองที่ได้รับจากเป้าหมายเมื่อcreateNew
ของ <AssignTo>
มีการตั้งค่าเป็น "จริง"
<Verb>
(ย่อยของ <Copy>
)
กำหนดว่าคัดลอกคำกริยา HTTP จากคำขอต้นทางไปยังปลายทางหรือไม่ อีกครั้ง องค์ประกอบนี้ไม่มีผลต่อการตอบกลับ
หากเป็น "จริง" ให้คัดลอกคำกริยาที่พบในแอตทริบิวต์ source
ขององค์ประกอบ <Copy>
ในคำขอที่ระบุในองค์ประกอบ <AssignTo>
ค่าเริ่มต้น | เท็จ |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | บูลีน |
องค์ประกอบระดับบนสุด |
<Copy>
|
องค์ประกอบย่อย | ไม่มี |
องค์ประกอบ <Verb>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Copy source="[request|response]"> <Verb>[false|true]</Verb> </Copy> </AssignMessage>
ตัวอย่างที่ 1
ตัวอย่างต่อไปนี้ตั้งค่า <Verb>
เป็น "จริง" ซึ่งจะคัดลอกคำกริยาจาก
คำขอเริ่มต้นเป็นคำขอใหม่ที่กำหนดเอง:
<AssignMessage name="copy-verb-1"> <Copy source="request"> <Verb>true</Verb> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
คุณจะใช้ <Verb>
ได้ก็ต่อเมื่อมีคุณสมบัติตรงตามเกณฑ์ต่อไปนี้เท่านั้น
- ประเภทข้อความ: คำขอ
<Version>
(ย่อยของ <Copy>
)
กำหนดว่าจะคัดลอกเวอร์ชัน HTTP จากคำขอแหล่งที่มาไปยัง ปลายทาง องค์ประกอบนี้ไม่มีผลต่อการตอบกลับ
หากเป็น "true" ให้คัดลอกเวอร์ชัน HTTP ที่พบในแอตทริบิวต์ source
ขององค์ประกอบ <Copy>
ไปยังออบเจ็กต์ที่ระบุโดยองค์ประกอบ <AssignTo>
ค่าเริ่มต้น | เท็จ |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | บูลีน |
องค์ประกอบระดับบนสุด |
<Copy>
|
องค์ประกอบย่อย | ไม่มี |
องค์ประกอบ <Version>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Copy source="[request|response]"> <Version>[false|true]</Version> </Copy> </AssignMessage>
ตัวอย่างที่ 1
ตัวอย่างต่อไปนี้ตั้งค่า <Version>
เป็น "จริง" ในคำขอ ซึ่งคัดลอก
เวอร์ชันจากออบเจ็กต์คำขอเริ่มต้นเป็นออบเจ็กต์คำขอใหม่แบบกำหนดเอง
<AssignMessage name="copy-version-1"> <Copy source="request"> <Version>true</Version> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
คุณจะใช้ <Version>
ได้ก็ต่อเมื่อมีคุณสมบัติตรงตามเกณฑ์ต่อไปนี้เท่านั้น
- ประเภทข้อความ: คำขอ
<DisplayName>
ใช้เพิ่มเติมจากแอตทริบิวต์ name
เพื่อติดป้ายกำกับนโยบายใน
เครื่องมือแก้ไขพร็อกซี UI การจัดการด้วยชื่อที่ฟังดูเป็นธรรมชาติมากขึ้น
องค์ประกอบ <DisplayName>
มีอยู่ในนโยบายทั้งหมด
ค่าเริ่มต้น | ไม่มี |
ต้องระบุหรือไม่ | ไม่บังคับ หากคุณไม่ใส่ <DisplayName> ค่าของแอตทริบิวต์
ใช้แอตทริบิวต์ name ของนโยบาย |
ประเภท | สตริง |
องค์ประกอบระดับบนสุด | <PolicyElement> |
องค์ประกอบย่อย | ไม่มี |
องค์ประกอบ <DisplayName>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<PolicyElement> <DisplayName>policy_display_name</DisplayName> ... </PolicyElement>
ตัวอย่าง
<PolicyElement> <DisplayName>My Validation Policy</DisplayName> </PolicyElement>
องค์ประกอบ <DisplayName>
ไม่มีแอตทริบิวต์หรือองค์ประกอบย่อย
<IgnoreUnresolvedVariables>
กำหนดว่าการประมวลผลจะหยุดเมื่อพบตัวแปรที่ยังไม่ได้รับคำตอบหรือไม่
ค่าเริ่มต้น | เท็จ |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | บูลีน |
องค์ประกอบระดับบนสุด |
<AssignMessage>
|
องค์ประกอบย่อย | ไม่มี |
ตั้งค่าเป็น true
เพื่อละเว้นตัวแปรที่ยังไม่ได้แก้ไขและประมวลผลต่อไป หรือไม่เช่นนั้น
false
ค่าเริ่มต้นคือ false
การตั้งค่า <IgnoreUnresolvedVariables>
เป็น true
แตกต่างจากการตั้งค่า
continueOnError
ของ <AssignMessage>
ถึง true
ว่าเป็นของ
การตั้งค่าและรับค่าของตัวแปร หากคุณตั้งค่า continueOnError
เป็น
true
แล้ว Edge จะไม่สนใจข้อผิดพลาดทั้งหมด ไม่ใช่เฉพาะข้อผิดพลาดที่พบขณะใช้งาน
ตัวแปร
องค์ประกอบ <IgnoreUnresolvedVariables>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <IgnoreUnresolvedVariables>[true|false]</IgnoreUnresolvedVariables> </AssignMessage>
ตัวอย่างที่ 1
ตัวอย่างต่อไปนี้ตั้งค่า <IgnoreUnresolvedVariables>
เป็น "จริง"
<AssignMessage name="ignoreunresolvedvariables"> <Copy source="response"> ... <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> </Copy> </AssignMessage>
<Remove>
นำส่วนหัว พารามิเตอร์การค้นหา พารามิเตอร์แบบฟอร์ม และ/หรือเพย์โหลดของข้อความออกจาก
ข้อความ ข้อความอาจเป็นคำขอหรือคำตอบก็ได้ คุณระบุว่าข้อความใด<Remove>
ทำงานโดยใช้เอลิเมนต์ <AssignTo>
ค่าเริ่มต้น | ไม่มี |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | ประเภทที่ซับซ้อน |
องค์ประกอบระดับบนสุด |
<AssignMessage>
|
องค์ประกอบย่อย |
<FormParams> <Headers> <Payload> <QueryParams> |
กรณีการใช้งานทั่วไปของ <Remove>
คือการลบพารามิเตอร์การค้นหาที่มีความละเอียดอ่อน
จากออบเจ็กต์คำขอขาเข้า เพื่อหลีกเลี่ยงการส่งไปยังเซิร์ฟเวอร์แบ็กเอนด์
องค์ประกอบ <Remove>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Remove> <!-- Can also be an empty array (<FormParams/>) --> <FormParams> <FormParam name="formparam_name">formparam_value</FormParam> ... </FormParams> <!-- Can also be an empty array (<Headers/>) --> <Headers> <Header name="header_name">header_value</Header> ... </Headers> <Payload>[false|true]</Payload> <!-- Can also be an empty array (<QueryParams/>) --> <QueryParams> <QueryParam name="queryparam_name">queryparam_value</QueryParam> ... </QueryParams> </Remove> </AssignMessage>
ตัวอย่างที่ 1
ตัวอย่างต่อไปนี้จะนำเนื้อความออกจากการตอบกลับ
<AssignMessage continueOnError="false" enabled="true" name="remove-1"> <DisplayName>remove-1</DisplayName> <Remove> <Payload>true</Payload> </Remove> <AssignTo createNew="false" transport="http" type="response"/> </AssignMessage>
ในขั้นตอนการตอบกลับ นโยบายนี้จะนำเนื้อหาของการตอบกลับออก โดยแสดงผลเฉพาะ HTTP เท่านั้น ส่วนหัวไปยังไคลเอ็นต์
ตัวอย่างที่ 2
ตัวอย่างต่อไปนี้จะนำพารามิเตอร์ฟอร์มและพารามิเตอร์การค้นหาทั้งหมดออกจากข้อมูลขาเข้า คำขอ:
<AssignMessage continueOnError="false" enabled="true" name="remove-2"> <Remove> <!-- Empty (<FormParams/>) removes all form parameters --> <FormParams/> <QueryParams> <QueryParam name="qp1"/> </QueryParams> </Remove> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
<FormParams>
(ย่อยของ <Remove>
)
นําพารามิเตอร์แบบฟอร์มที่ระบุออกจากคําขอ องค์ประกอบนี้ไม่มีผลต่อ คำตอบ
ค่าเริ่มต้น | ไม่มี |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | อาร์เรย์ขององค์ประกอบ <FormParam> หรืออาร์เรย์ว่าง |
องค์ประกอบระดับบนสุด |
<Remove>
|
องค์ประกอบย่อย |
<FormParam> |
องค์ประกอบ <FormParams>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Remove> <!-- Can also be an empty array (<FormParams/>) --> <FormParams> <FormParam name="formparam_name">formparam_value</FormParam> ... </FormParams> </Remove> </AssignMessage>
ตัวอย่างที่ 1
ตัวอย่างต่อไปนี้จะนำพารามิเตอร์แบบฟอร์ม 3 รายการออกจากคำขอ
<AssignMessage name="remove-formparams-1"> <Remove> <FormParams> <FormParam name="form_param_1"/> <FormParam name="form_param_2"/> <FormParam name="form_param_3"/> </FormParams> </Remove> <AssignTo createNew="false" transport="http" type="application/x-www-form-urlencoded"/> </AssignMessage>
ตัวอย่างที่ 2
ตัวอย่างต่อไปนี้จะนําพารามิเตอร์แบบฟอร์มทั้งหมดออกจากคําขอ
<AssignMessage name="remove-formparams-2"> <Remove> <FormParams/> </Remove> <AssignTo createNew="false" transport="http" type="application/x-www-form-urlencoded"/> </AssignMessage>
ตัวอย่างที่ 3
หากมีพารามิเตอร์แบบฟอร์มหลายรายการที่มีชื่อเดียวกัน ให้ใช้ไวยากรณ์ต่อไปนี้
<AssignMessage name="remove-formparams-3"> <Remove> <FormParams> <FormParam name="f1"/> <FormParam name="f2"/> <FormParam name="f3.2"/> </FormParams> </Remove> <AssignTo createNew="false" transport="http" type="application/x-www-form-urlencoded"/> </AssignMessage>
ตัวอย่างนี้จะนำ "f1", "f2" และค่าที่สองของ "f3" ออก หากเป็น "f3" มีเพียงรายการเดียว ระบบก็จะไม่ลบออก
คุณจะใช้ <FormParams>
ได้ก็ต่อเมื่อมีคุณสมบัติตรงตามเกณฑ์ต่อไปนี้เท่านั้น
- ประเภทข้อความ: คำขอ
Content-Type
: "application/x-www-form-urlencoded"
<Headers>
(ย่อยของ <Remove>
)
นำส่วนหัว HTTP ที่ระบุออกจากคำขอหรือการตอบกลับ ซึ่งระบุโดย
<AssignTo>
ค่าเริ่มต้น | ไม่มี |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | อาร์เรย์ขององค์ประกอบ <Header> หรืออาร์เรย์ว่าง |
องค์ประกอบระดับบนสุด |
<Remove>
|
องค์ประกอบย่อย |
<Header> |
องค์ประกอบ <Headers>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Remove> <!-- Can also be an empty array (<Headers/>) --> <Headers> <Header name="header_name">header_value</Header> ... </Headers> </Remove> </AssignMessage>
ตัวอย่างที่ 1
ตัวอย่างต่อไปนี้จะนำส่วนหัว user-agent
ออกจากคำขอ
<AssignMessage name="remove-headers-1"> <Remove> <Headers> <Header name="user-agent"/> </Headers> </Remove> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
ตัวอย่างที่ 2
ตัวอย่างต่อไปนี้จะนำส่วนหัวทั้งหมดออกจากคำขอ
<AssignMessage name="remove-headers-2"> <Remove> <Headers/> </Remove> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
ตัวอย่างที่ 3
หากมีส่วนหัวหลายรายการที่มีชื่อเดียวกัน ให้ใช้ไวยากรณ์ต่อไปนี้
<AssignMessage name="remove-headers-3"> <Remove> <Headers> <Header name="h1"/> <Header name="h2"/> <Header name="h3.2"/> </Headers> </Remove> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
ตัวอย่างนี้จะนำ "h1", "h2" และค่าที่สองของ "h3" ออก จากคำขอ หากเป็น "h3" มีเพียงค่าเดียว ระบบจึงไม่ได้นำออก
<Payload>
(ย่อยของ <Remove>
)
กำหนดว่า <Remove>
จะลบเพย์โหลดในคำขอหรือการตอบกลับ ซึ่งก็คือ
ที่ระบุโดยองค์ประกอบ <AssignTo>
ตั้งค่าเป็น "จริง" ถึง
ล้างเพย์โหลด มิฉะนั้นจะเป็น "เท็จ" ค่าเริ่มต้นคือ "false"
ค่าเริ่มต้น | เท็จ |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | บูลีน |
องค์ประกอบระดับบนสุด |
<Remove>
|
องค์ประกอบย่อย | ไม่มี |
องค์ประกอบ <Payload>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Remove> <Payload>[false|true]</Payload> </Remove> </AssignMessage>
ตัวอย่างที่ 1
ตัวอย่างต่อไปนี้ตั้งค่า <Payload>
เป็น "จริง" เพื่อให้เพย์โหลดคำขอ
ล้างแล้ว:
<AssignMessage name="remove-payload-1"> <Remove> <Payload>true</Payload> </Remove> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
<QueryParams>
(ย่อยของ <Remove>
)
นำพารามิเตอร์การค้นหาที่ระบุออกจากคำขอ องค์ประกอบนี้ไม่มีผลต่อ คำตอบ
ค่าเริ่มต้น | ไม่มี |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | อาร์เรย์ขององค์ประกอบ <QueryParam> หรืออาร์เรย์ว่าง |
องค์ประกอบระดับบนสุด |
<Remove>
|
องค์ประกอบย่อย |
<QueryParam> |
องค์ประกอบ <QueryParams>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Remove> <!-- Can also be an empty array (<QueryParams/>) --> <QueryParams> <QueryParam name="queryparam_name">queryparam_value</QueryParam> ... </QueryParams> </Remove> </AssignMessage>
ตัวอย่างที่ 1
ตัวอย่างต่อไปนี้จะนำพารามิเตอร์การค้นหารายการเดียวออกจากคำขอ
<AssignMessage name="remove-queryparams-1"> <Remove> <QueryParams> <QueryParam name="qp1"/> </QueryParams> </Remove> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
ตัวอย่างที่ 2
ตัวอย่างต่อไปนี้จะนำพารามิเตอร์การค้นหาทั้งหมดออกจากคำขอ
<AssignMessage name="remove-queryparams-2"> <Remove> <QueryParams/> </Remove> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
ตัวอย่างที่ 3
หากมีพารามิเตอร์การค้นหาหลายรายการที่มีชื่อเดียวกัน ให้ใช้ไวยากรณ์ต่อไปนี้
<AssignMessage name="remove-queryparams-3"> <Remove> <QueryParams> <QueryParam name="qp1"/> <QueryParam name="qp2"/> <QueryParam name="qp3.2"/> </QueryParams> </Remove> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
ตัวอย่างนี้จะนำ "qp1", "qp2" และค่าที่สองของ "qp3" ออก จากคำขอ ถ้า "QP3" มีเพียงค่าเดียว ระบบจึงไม่ได้นำออก
ตัวอย่าง 4
ตัวอย่างต่อไปนี้จะนําพารามิเตอร์การค้นหา apikey
ออกจากคําขอ
<AssignMessage name="remove-query-param"> <Remove> <QueryParams> <QueryParam name="apikey"/> </QueryParams> </Remove> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
คุณจะใช้ <QueryParams>
ได้ก็ต่อเมื่อมีคุณสมบัติตรงตามเกณฑ์ต่อไปนี้เท่านั้น
- กริยา HTTP: GET
- ประเภทข้อความ: คำขอ
<Set>
ตั้งค่าข้อมูลในคำขอหรือข้อความตอบกลับซึ่งระบุโดย
<AssignTo>
<Set>
เขียนทับส่วนหัวหรือ
ที่มีอยู่ในข้อความต้นฉบับอยู่แล้ว หากต้องการสร้างส่วนหัวหรือพารามิเตอร์ใหม่ ให้ใช้
เอลิเมนต์ <Add>
แทน
ค่าเริ่มต้น | ไม่มี |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | ประเภทที่ซับซ้อน |
องค์ประกอบระดับบนสุด |
<AssignMessage>
|
องค์ประกอบย่อย |
<FormParams> <Headers> <Payload> <Path> <QueryParams> <ReasonPhrase> <StatusCode> <Verb> <Version> |
องค์ประกอบ <Set>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Set> <FormParams> <FormParam name="formparam_name">formparam_value</FormParam> ... </FormParams> <Headers> <Header name="header_name">header_value</Header> ... </Headers> <Path>path</Path> <Payload contentType="content_type" variablePrefix="prefix" variableSuffix="suffix">new_payload</Payload> <QueryParams> <QueryParam name="queryparam_name">queryparam_value</QueryParam> ... </QueryParams> <ReasonPhrase>reason_for_error or {variable}</ReasonPhrase> <StatusCode>HTTP_status_code or {variable}</StatusCode> <Verb>[GET|POST|PUT|PATCH|DELETE|{variable}]</Verb> <Version>[1.0|1.1|{variable}]</Verb> </Set> </AssignMessage>
ตัวอย่างที่ 1
ตัวอย่างต่อไปนี้แสดงองค์ประกอบ <Set>
<AssignMessage continueOnError="false" enabled="true" name="set-1"> <Set> <FormParams> <FormParam name="myparam">{request.header.myparam}</FormParam> </FormParams> <Headers> <Header name="user-agent">{request.header.user-agent}</Header> </Headers> <QueryParams> <QueryParam name="name">{request.header.name}</QueryParam> <QueryParam name="address">{request.header.address}</QueryParam> </QueryParams> <!-- <Verb>GET</Verb> --> <Payload contentType="text/plain">42</Payload> <Path/> <ReasonPhrase>Bad request</ReasonPhrase> <StatusCode>400</StatusCode> <Verb>POST</Verb> <Verb>{my_variable}</Verb> <Version>1.1</Version> </Set> <AssignTo createNew="false" transport="http" type="response"/> </AssignMessage>
<FormParams>
(ย่อยของ <Set>
)
เขียนทับพารามิเตอร์แบบฟอร์มที่มีอยู่ในคำขอและแทนที่ด้วยค่าใหม่ที่คุณ ด้วยองค์ประกอบนี้ องค์ประกอบนี้ไม่มีผลต่อการตอบกลับ
ค่าเริ่มต้น | ไม่มี |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | อาร์เรย์ขององค์ประกอบ <FormParam> |
องค์ประกอบระดับบนสุด |
<Set>
|
องค์ประกอบย่อย |
<FormParam> |
องค์ประกอบ <FormParams>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Set> <FormParams> <FormParam name="formparam_name">formparam_value</FormParam> ... </FormParams> </Set> </AssignMessage>
ตัวอย่างที่ 1
ตัวอย่างต่อไปนี้ตั้งค่าพารามิเตอร์แบบฟอร์มชื่อ "myparam" เป็นค่าของ
ตัวแปร request.header.myparam
ในคำขอใหม่ที่กำหนดเอง:
<AssignMessage name="set-formparams-1"> <Set> <FormParams> <FormParam name="myparam">{request.header.myparam}</FormParam> </FormParams> </Set> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
คุณจะใช้ <FormParams>
ได้ก็ต่อเมื่อมีคุณสมบัติตรงตามเกณฑ์ต่อไปนี้เท่านั้น
- กริยา HTTP: POST
- ประเภทข้อความ: คำขอ
หากคุณกำหนดพารามิเตอร์แบบฟอร์มที่ว่างเปล่าในนโยบาย
(<Add><FormParams/></Add>
) นโยบายนี้ไม่ได้เพิ่มรูปแบบใดๆ
พารามิเตอร์ วิธีนี้เหมือนกับการละเว้น <FormParams>
<Set>
เปลี่ยน Content-Type
ของข้อความเป็น
"application/x-www-form-urlencoded" ก่อนที่จะส่งไปยังปลายทางเป้าหมาย
<Headers>
(ย่อยของ <Set>
)
เขียนทับส่วนหัว HTTP ที่มีอยู่ในคำขอหรือการตอบกลับ ซึ่งระบุโดย
<AssignTo>
ค่าเริ่มต้น | ไม่มี |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | อาร์เรย์ขององค์ประกอบ <Header> |
องค์ประกอบระดับบนสุด |
<Set>
|
องค์ประกอบย่อย |
<Header> |
องค์ประกอบ <Headers>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Set> <Headers> <Header name="header_name">header_value</Header> ... </Headers> </Set> </AssignMessage>
ตัวอย่างที่ 1
ตัวอย่างต่อไปนี้ตั้งค่าส่วนหัว user-agent
เป็นค่าของ
ตัวแปร request.header.user-agent
:
<AssignMessage name="set-headers-1"> <Set> <Headers> <Header name="user-agent">{request.header.user-agent}</Header> </Headers> </Set> <AssignTo createNew="true" transport="http" type="response"/> </AssignMessage>
หากคุณกำหนดส่วนหัวที่ว่างเปล่าในนโยบาย
(<Add><Headers/></Add>
) นโยบายนี้จะไม่เพิ่มส่วนหัวใดๆ ช่วงเวลานี้
จะเหมือนกับการละเว้น <Headers>
<Path>
(ย่อยของ <Set>
)
<Payload>
(ย่อยของ <Set>
)
กำหนดเนื้อหาข้อความสำหรับคำขอหรือการตอบกลับซึ่งระบุโดย
<AssignTo>
เพย์โหลดอาจเป็นเนื้อหาประเภทใดก็ได้ที่ถูกต้อง เช่น ข้อความธรรมดา
ข้อความ, JSON หรือ XML
ค่าเริ่มต้น | สตริงว่าง |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | สตริง |
องค์ประกอบระดับบนสุด |
<Set>
|
องค์ประกอบย่อย | ไม่มี |
องค์ประกอบ <Payload>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Set> <Payload contentType="content_type" variablePrefix="prefix" variableSuffix="suffix">new_payload</Payload> </Set> </AssignMessage>
ตัวอย่างที่ 1
ตัวอย่างต่อไปนี้ตั้งค่าเพย์โหลดข้อความธรรมดา
<AssignMessage name="set-payload-1"> <Set> <Payload contentType="text/plain">42</Payload> </Set> </AssignMessage>
ตัวอย่างที่ 2
ตัวอย่างต่อไปนี้ตั้งค่าเพย์โหลด JSON
<AssignMessage name="set-payload-2"> <Set> <Payload contentType="application/json"> {"name":"foo", "type":"bar"} </Payload> </Set> </AssignMessage>
ตัวอย่างที่ 3
ตัวอย่างต่อไปนี้แทรกค่าตัวแปรลงในเพย์โหลดโดยการรวมชื่อตัวแปร ในวงเล็บปีกกา:
<AssignMessage name="set-payload-3"> <Set> <Payload contentType="application/json"> {"name":"foo", "type":"{variable_name}"} </Payload> </Set> </AssignMessage>
ใน Apigee Edge เวอร์ชันเก่า เช่น ก่อนระบบคลาวด์รุ่น 16.08.17 คุณอาจทำได้ดังนี้
ไม่ใช้วงเล็บปีกกาเพื่อแสดงถึงการอ้างอิงตัวแปรภายในเพย์โหลด JSON ในรุ่นต่างๆ คุณจะ
เพื่อใช้แอตทริบิวต์ variablePrefix
และ variableSuffix
เพื่อ
ระบุอักขระตัวคั่นและใช้อักขระเหล่านั้นเพื่อรวมชื่อตัวแปร เช่น
<AssignMessage name="set-payload-3b"> <Set> <Payload contentType="application/json" variablePrefix="@" variableSuffix="#"> {"name":"foo", "type":"@variable_name#"} </Payload> </Set> </AssignMessage>
ไวยากรณ์แบบเก่านี้ยังคงใช้งานได้อยู่
ตัวอย่าง 4
ระบบจะถือว่าเนื้อหาของ <Payload>
เป็นเทมเพลตข้อความ ซึ่งหมายความว่า
นโยบาย AssignMessage แทนที่ตัวแปรที่อยู่ในวงเล็บปีกกาด้วยค่าของพารามิเตอร์
ตัวแปรที่อ้างอิงขณะรันไทม์
ตัวอย่างต่อไปนี้ใช้ไวยากรณ์วงเล็บปีกกาเพื่อตั้งค่าเพย์โหลดบางส่วนเป็น ค่าตัวแปร:
<AssignMessage name="set-payload-4"> <Set> <Payload contentType="text/xml"> <root> <e1>sunday</e1> <e2>funday</e2> <e3>{var1}</e3> </root> </Payload> </Set> </AssignMessage>
ตารางต่อไปนี้อธิบายแอตทริบิวต์ของ <Payload>
แอตทริบิวต์ | คำอธิบาย | การมีบุคคลอยู่ | ประเภท |
---|---|---|---|
contentType |
หากระบุ จะมีการกำหนดค่าของ |
ไม่บังคับ | สตริง |
variablePrefix |
(ไม่บังคับ) ระบุตัวคั่นข้างหน้าในตัวแปรโฟลว์ ค่าเริ่มต้นคือ "{" สำหรับ ดูข้อมูลเพิ่มเติมได้ที่การอ้างอิงตัวแปรโฟลว์ | ไม่บังคับ | ถ่าน |
variableSuffix |
(ไม่บังคับ) ระบุตัวคั่นข้างหลังในตัวแปรโฟลว์ ค่าเริ่มต้นคือ "}" สำหรับ ดูข้อมูลเพิ่มเติมได้ที่การอ้างอิงตัวแปรโฟลว์ | ไม่บังคับ | ถ่าน |
<QueryParams>
(ย่อยของ <Set>
)
เขียนทับพารามิเตอร์การค้นหาที่มีอยู่ในคำขอด้วยค่าใหม่ องค์ประกอบนี้ไม่มีผลใดๆ ในคำตอบได้
ค่าเริ่มต้น | ไม่มี |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | อาร์เรย์ขององค์ประกอบ <QueryParam> |
องค์ประกอบระดับบนสุด |
<Set>
|
องค์ประกอบย่อย |
<QueryParam> |
องค์ประกอบ <QueryParams>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Set> <QueryParams> <QueryParam name="queryparam_name">queryparam_value</QueryParam> ... </QueryParams> </Set> </AssignMessage>
ตัวอย่างที่ 1
ตัวอย่างต่อไปนี้จะกำหนด "ที่อยู่" เป็นค่าของพารามิเตอร์
ตัวแปร request.header.address
:
<AssignMessage continueOnError="false" enabled="true" name="set-queryparams-1"> <Set> <QueryParams> <QueryParam name="address">{request.header.address}</QueryParam> </QueryParams> </Set> </AssignMessage>
คุณจะใช้ <QueryParams>
ได้ก็ต่อเมื่อมีคุณสมบัติตรงตามเกณฑ์ต่อไปนี้เท่านั้น
- กริยา HTTP: GET
- ประเภทข้อความ: คำขอ
หากคุณกำหนดพารามิเตอร์การค้นหาที่ว่างเปล่าในนโยบาย
(<Set><QueryParams/></Set>
) นโยบายนี้ไม่ได้ตั้งค่าการค้นหาใดๆ
พารามิเตอร์ เช่นเดียวกับการละเว้น <QueryParams>
<ReasonPhrase>
(ย่อยของ <Set>
)
กำหนดวลีเหตุผลในคำตอบ โดยปกติจะเป็นการแก้ไขข้อบกพร่องเมื่อใช้ร่วมกับ
<StatusCode>
องค์ประกอบนี้ไม่มีผลต่อคำขอ
ค่าเริ่มต้น | ไม่มี |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | สตริง |
องค์ประกอบระดับบนสุด |
<Set>
|
องค์ประกอบย่อย | ไม่มี |
องค์ประกอบ <ReasonPhrase>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Set> <ReasonPhrase>reason_for_error or {variable}</ReasonPhrase> </Set> </AssignMessage>
ตัวอย่างที่ 1
ตัวอย่างต่อไปนี้จะอธิบายวลีเหตุผลง่ายๆ
<AssignMessage name="set-reasonphrase-1"> <Set> <ReasonPhrase>Bad medicine</ReasonPhrase> </Set> <AssignTo createNew="true" transport="http" type="response"/> </AssignMessage>
ตัวอย่างที่ 2
ระบบจะถือว่าเนื้อหาของ <ReasonPhrase>
เป็นเทมเพลตข้อความ ซึ่งหมายความว่า
ชื่อตัวแปรที่อยู่ในวงเล็บปีกกาจะถูกแทนที่ขณะรันไทม์ด้วยค่าของตัวแปร
ตัวแปรที่อ้างอิงตามตัวอย่างต่อไปนี้
<AssignMessage name="set-reasonphrase-2"> <Set> <ReasonPhrase>{calloutresponse.reason.phrase}</ReasonPhrase> </Set> <AssignTo createNew="true" transport="http" type="response"/> </AssignMessage>
คุณจะใช้ <ReasonPhrase>
ได้ก็ต่อเมื่อมีคุณสมบัติตรงตามเกณฑ์ต่อไปนี้เท่านั้น
- ประเภทข้อความ: การตอบกลับ
<StatusCode>
(ย่อยของ <Set>
)
ตั้งค่ารหัสสถานะในคำตอบ องค์ประกอบนี้ไม่มีผลต่อคำขอ
ค่าเริ่มต้น | "200" (เมื่อแอตทริบิวต์ createNew ของ <AssignTo>
มีค่าเป็น "จริง") |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | สตริงหรือ variable |
องค์ประกอบระดับบนสุด |
<Set>
|
องค์ประกอบย่อย | ไม่มี |
องค์ประกอบ <StatusCode>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Set> <StatusCode>HTTP_status_code or {variable}</StatusCode> </Set> </AssignMessage>
ตัวอย่างที่ 1
ตัวอย่างต่อไปนี้จะตั้งค่ารหัสสถานะง่ายๆ
<AssignMessage name="set-statuscode-1"> <Set> <StatusCode>404</StatusCode> </Set> <AssignTo createNew="true" transport="http" type="response"/> </AssignMessage>
ตัวอย่างที่ 2
ระบบจะถือว่าเนื้อหาของ <StatusCode>
เป็นเทมเพลตข้อความ ซึ่งหมายความว่า
ชื่อตัวแปรที่อยู่ในวงเล็บปีกกาจะถูกแทนที่ขณะรันไทม์ด้วยค่าของ
ตัวแปรที่อ้างอิงตามตัวอย่างต่อไปนี้
<AssignMessage name="set-statuscode-2"> <Set> <StatusCode>{calloutresponse.status.code}</StatusCode> </Set> <AssignTo createNew="true" transport="http" type="response"/> </AssignMessage>
คุณจะใช้ <StatusCode>
ได้ก็ต่อเมื่อมีคุณสมบัติตรงตามเกณฑ์ต่อไปนี้เท่านั้น
- ประเภทข้อความ: การตอบกลับ
<Verb>
(ย่อยของ <Set>
)
ตั้งค่าคำกริยา HTTP ในคำขอ องค์ประกอบนี้ไม่มีผลต่อการตอบกลับ
ค่าเริ่มต้น | ไม่มี |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | สตริงหรือ variable |
องค์ประกอบระดับบนสุด |
<Set>
|
องค์ประกอบย่อย | ไม่มี |
องค์ประกอบ <Verb>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Set> <Verb>[GET|POST|PUT|PATCH|DELETE|{variable}]</Verb> </Set> </AssignMessage>
ตัวอย่างที่ 1
ตัวอย่างต่อไปนี้กำหนดคำกริยาง่ายๆ ในคำขอ
<AssignMessage name="set-verb-1"> <Set> <Verb>POST</Verb> </Set> <AssignTo createNew="true" transport="http" type="request"/> </AssignMessage>
ตัวอย่างที่ 2
ระบบจะถือว่าเนื้อหาของ <Verb>
เป็นเทมเพลตข้อความ ซึ่งหมายความว่าชื่อตัวแปร
ที่ห่อด้วยวงเล็บปีกกาจะถูกแทนที่ขณะรันไทม์ด้วยค่าของการอ้างอิง
ตัวแปร
ตัวอย่างต่อไปนี้ใช้ตัวแปรเพื่อเติมคำกริยา
<AssignMessage name="set-verb-2"> <Set> <Verb>{my_variable}</Verb> </Set> <AssignTo createNew="true" transport="http" type="request"/> </AssignMessage>
คุณจะใช้ <Verb>
ได้ก็ต่อเมื่อมีคุณสมบัติตรงตามเกณฑ์ต่อไปนี้เท่านั้น
- ประเภทข้อความ: คำขอ
<Version>
(ย่อยของ <Set>
)
ตั้งค่าเวอร์ชัน HTTP ในคำขอ องค์ประกอบนี้ไม่มีผลต่อการตอบกลับ
ค่าเริ่มต้น | ไม่มี |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | สตริงหรือ variable |
องค์ประกอบระดับบนสุด |
<Set>
|
องค์ประกอบย่อย | ไม่มี |
องค์ประกอบ <Version>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Set> <Version>[1.0|1.1|{variable}]</Verb> </Set> </AssignMessage>
ตัวอย่างที่ 1
ตัวอย่างต่อไปนี้ตั้งค่าหมายเลขเวอร์ชันเป็น "1.1"
<AssignMessage name="set-version-1"> <Set> <Version>1.1</Version> </Set> <AssignTo createNew="true" transport="http" type="request"/> </AssignMessage>
ตัวอย่างที่ 2
รายการต่อไปนี้ใช้ตัวแปรในวงเล็บปีกกาเพื่อตั้งหมายเลขเวอร์ชัน
<AssignMessage name="set-version-2"> <Set> <Version>{my_version}</Version> </Set> <AssignTo createNew="true" transport="http" type="request"/> </AssignMessage>
ระบบจะถือว่าเนื้อหาของ <Version>
เป็นเทมเพลตข้อความ ซึ่งหมายความว่า
ชื่อตัวแปรที่อยู่ในวงเล็บปีกกาจะถูกแทนที่ขณะรันไทม์ด้วยค่าของการอ้างอิง
ตัวแปร
คุณจะใช้ <Version>
ได้ก็ต่อเมื่อมีคุณสมบัติตรงตามเกณฑ์ต่อไปนี้เท่านั้น
- ประเภทข้อความ: คำขอ
สร้างข้อความคำขอที่กำหนดเอง
คุณใช้นโยบาย AssignMessage เพื่อสร้างข้อความคำขอที่กำหนดเอง หลังจากสร้าง คุณสามารถใช้เทมเพลตได้ด้วยวิธีต่อไปนี้
- เข้าถึงตัวแปรในนโยบายอื่นๆ
- ส่งต่อไปยังบริการภายนอก
หากต้องการสร้างข้อความคำขอที่กำหนดเอง ให้ใช้องค์ประกอบ <AssignTo>
ในนโยบาย AssignMessage
ตั้งค่า createNew
เป็น "จริง" แล้วระบุชื่อข้อความใหม่ในส่วนเนื้อหา
ตามตัวอย่างต่อไปนี้
<AssignMessage name="assignto-2"> <AssignTo createNew="true" transport="http" type="request"/> </AssignMessage>
โดยค่าเริ่มต้น Edge จะไม่ดำเนินการใดๆ กับข้อความคำขอที่กำหนดเอง หลังจากสร้างแล้ว Edge จะ ดำเนินการตามขั้นตอนต่อด้วยคำขอเดิม หากต้องการใช้คำขอที่กำหนดเอง ให้เพิ่มนโยบายเป็น เป็นนโยบาย Serviceข้อความไฮไลต์ ไปยังพร็อกซีที่สามารถส่งคำขอที่กำหนดเองไปยังภายนอก service.
ตัวอย่างต่อไปนี้สร้างข้อความคำขอที่กำหนดเอง
ตัวอย่างที่ 1
ตัวอย่างต่อไปนี้จะสร้างออบเจ็กต์คำขอแบบกำหนดเองที่มีการกำหนดข้อความ
<AssignMessage name="AssignMessage-3"> <AssignTo createNew="true" type="request">MyCustomRequest</AssignTo> <Copy> <Headers> <Header name="user-agent"/> </Headers> </Copy> <Set> <QueryParams> <QueryParam name="address">{request.queryparam.addy}</QueryParam> </QueryParams> <Verb>GET</Verb> </Set> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> </AssignMessage>
ตัวอย่างนี้
- สร้างออบเจ็กต์ข้อความคำขอใหม่ชื่อ "MyCustomRequest"
- ใน MyCustomRequest นโยบายนี้:
- คัดลอกค่าของส่วนหัว HTTP
user-agent
จากข้อมูลขาเข้า ไปยังข้อความใหม่ เนื่องจาก<Copy>
ใช้การอ้างอิงแบบสัมบูรณ์ไปยังฟังก์ชัน ตัวแปรโฟลว์user-agent
ไม่มี ต้องระบุแอตทริบิวต์source
เป็น<Copy>
- ตั้งค่าพารามิเตอร์การค้นหา
address
ในข้อความที่กำหนดเองเป็นค่า พารามิเตอร์การค้นหาaddy
ของคำขอที่เข้ามาใหม่ - ตั้งค่ากริยา HTTP เป็น
GET
- คัดลอกค่าของส่วนหัว HTTP
- ตั้งค่า
<IgnoreUnresolvedVariables>
เป็น "เท็จ" เมื่อ<IgnoreUnresolvedVariables>
เป็น "เท็จ" หากไม่มีตัวแปรตัวใดตัวหนึ่งที่นโยบายพยายามเพิ่ม Edge จะหยุด ในขั้นตอน API
ตัวอย่างที่ 2
อีกตัวอย่างหนึ่งที่แสดงวิธีสร้างออบเจ็กต์คำขอที่กำหนดเองด้วยตัวเลือก Assign ข้อความ:
<AssignMessage name="AssignMessage-2"> <AssignTo createNew="true" type="request">partner.request</AssignTo> <Set> <Verb>POST</Verb> <Payload contentType="text/xml"> <request><operation>105</operation></request> </Payload> </Set> </AssignMessage>
ตัวอย่างนี้สร้างคำขอที่กำหนดเองใหม่ชื่อ "partner.request" จากนั้นตั้งค่า
<Verb>
และ <Payload>
ในคำขอใหม่
คุณเข้าถึงข้อความคำขอที่กำหนดเองได้ในนโยบาย AssignMessage อื่นที่เกิดขึ้นภายหลังใน
โฟลว์ได้ ตัวอย่างต่อไปนี้ได้รับค่าของข้อความคำขอที่กำหนดเอง
ส่วนหัว user-agent
:
<AssignMessage name="custom-request-1-access"> <DisplayName>custom-request-1-access</DisplayName> <AssignTo createNew="false" type="request"></AssignTo> <Set> <Headers> <Header name="user-agentCopyCustomRequest">{MyCustomRequest.header.user-agent}</Header> </Headers> </Set> </AssignMessage>
วิดีโอ
ดูข้อมูลเพิ่มเติมเกี่ยวกับนโยบาย AssignMessage ได้ในวิดีโอต่อไปนี้
วิดีโอ | คำอธิบาย |
---|---|
ทำไมต้องมอบหมาย ใช้นโยบายข้อความหรือไม่ | ดูประโยชน์ของการใช้นโยบาย AssignMessage เพื่อแก้ไขคำขอ API หรือ การตอบกลับโดยไม่ต้องแก้ไขโค้ดแบ็กเอนด์ |
คัดลอกองค์ประกอบ API ใช้นโยบาย AssignMessage | คัดลอกองค์ประกอบจากคำขอหรือการตอบกลับ API แล้วสร้างคำขอหรือการตอบกลับใหม่ โดยใช้นโยบาย AssignMessage |
นำ API ออก องค์ประกอบที่ใช้นโยบาย AssignMessage | นำองค์ประกอบ API ออก และแก้ไข API ก่อนที่จะไปถึงแบ็กเอนด์เป้าหมายโดยใช้ นโยบาย AssignMessage |
เพิ่มและตั้งค่า API องค์ประกอบที่ใช้นโยบาย AssignMessage | เปลี่ยนคำขอหรือการตอบกลับ API ด้วยการเพิ่มพารามิเตอร์การค้นหา ส่วนหัว พารามิเตอร์แบบฟอร์ม หรือ เพย์โหลดที่ใช้นโยบาย AssignMessage |
สร้างแบบกำหนดเอง ตัวแปรที่ใช้นโยบาย AssignMessage | ตั้งค่าตัวแปรโฟลว์ที่กำหนดเองโดยใช้นโยบาย AssignMessage และใช้ประโยชน์จากตัวแปรใน นโยบายอื่นๆ ในพร็อกซี API |
สร้างใหม่ ออบเจ็กต์คำขอหรือตอบกลับโดยใช้นโยบาย AssignMessage | สร้างคำขอ API หรือออบเจ็กต์การตอบกลับใหม่โดยใช้นโยบาย AssignMessage ที่ API รันไทม์ |
สร้าง API จำลอง ใช้นโยบาย AssignMessage | สร้างการจำลอง REST API แบบง่ายด้วยการเพิ่มนโยบาย AssignMessage ในการตอบสนอง |
ตั้งค่าหรือแก้ไข เพย์โหลดโดยใช้นโยบาย AssignMessage | แปลงคำขอ REST เป็นคำขอ SOAP โดยการตั้งค่า SOAP Payload โดยใช้นโยบาย AssignMessage นโยบายที่รันไทม์ของ API |
รหัสข้อผิดพลาด
ส่วนนี้จะอธิบายรหัสข้อผิดพลาดและข้อความแสดงข้อผิดพลาดที่แสดงกลับมา และตัวแปรข้อผิดพลาดที่ Edge ตั้งค่าไว้เมื่อนโยบายนี้ทริกเกอร์ข้อผิดพลาด ข้อมูลนี้สำคัญต่อผู้ที่กำลังพัฒนากฎข้อบกพร่องเพื่อจัดการข้อบกพร่อง ดูข้อมูลเพิ่มเติมได้ที่สิ่งที่คุณต้องทราบเกี่ยวกับข้อผิดพลาดด้านนโยบายและการจัดการข้อบกพร่อง
ข้อผิดพลาดเกี่ยวกับรันไทม์
ข้อผิดพลาดเหล่านี้อาจเกิดขึ้นเมื่อนโยบายทำงาน
รหัสข้อบกพร่อง | สถานะ HTTP | สาเหตุ | แก้ไข |
---|---|---|---|
steps.assignmessage.SetVariableFailed |
500 | นโยบายไม่สามารถตั้งค่าตัวแปร ดูชื่อตัวแปรที่ยังไม่ได้รับการแก้ไขในสตริงข้อบกพร่อง | |
steps.assignmessage.VariableOfNonMsgType |
500 |
ข้อผิดพลาดนี้เกิดขึ้นหากตั้งค่าแอตทริบิวต์ ตัวแปรประเภทข้อความแสดงคําขอและคําตอบ HTTP ทั้งหมด ตัวแปรการไหลของ Edge ในตัว |
build |
steps.assignmessage.UnresolvedVariable |
500 |
ข้อผิดพลาดนี้จะเกิดขึ้นหากตัวแปรที่ระบุไว้ในนโยบาย "กำหนดข้อความ" เป็นค่าใดค่าหนึ่งต่อไปนี้
|
build |
ข้อผิดพลาดในการทำให้ใช้งานได้
ข้อผิดพลาดเหล่านี้อาจเกิดขึ้นเมื่อคุณติดตั้งใช้งานพร็อกซีที่มีนโยบายนี้
ชื่อข้อผิดพลาด | สาเหตุ | แก้ไข |
---|---|---|
InvalidIndex |
หากดัชนีที่ระบุในองค์ประกอบ <Copy> และ/หรือ <Remove> ของนโยบายการกําหนดข้อความเป็น 0 หรือเป็นตัวเลขติดลบ การติดตั้งใช้งาน API Proxy จะดำเนินการไม่สำเร็จ
|
build |
InvalidVariableName |
หากองค์ประกอบย่อย <Name> ว่างเปล่าหรือไม่ได้ระบุในองค์ประกอบ <AssignVariable> การทำให้พร็อกซี API ใช้งานได้จะล้มเหลวเนื่องจากไม่มีชื่อตัวแปรที่ถูกต้องที่จะกำหนดค่า ต้องระบุชื่อตัวแปรที่ถูกต้อง
|
build |
InvalidPayload |
เพย์โหลดที่ระบุในนโยบายไม่ถูกต้อง |
ตัวแปรความผิดพลาด
ระบบจะตั้งค่าตัวแปรเหล่านี้เมื่อนโยบายนี้ทริกเกอร์ข้อผิดพลาดที่รันไทม์ ดูข้อมูลเพิ่มเติมได้ที่สิ่งที่คุณต้องทราบเกี่ยวกับข้อผิดพลาดด้านนโยบาย
ตัวแปร | สถานที่ | ตัวอย่าง |
---|---|---|
fault.name="fault_name" |
fault_name คือชื่อข้อบกพร่องตามที่แสดงในตารางข้อผิดพลาดรันไทม์ด้านบน ชื่อข้อบกพร่องคือส่วนสุดท้ายของรหัสข้อบกพร่อง | fault.name Matches "UnresolvedVariable" |
assignmessage.policy_name.failed |
policy_name คือชื่อที่ผู้ใช้ระบุของนโยบายที่เป็นสาเหตุของข้อผิดพลาด | assignmessage.AM-SetResponse.failed = true |
ตัวอย่างการตอบกลับข้อผิดพลาด
{ "fault":{ "detail":{ "errorcode":"steps.assignmessage.VariableOfNonMsgType" }, "faultstring":"AssignMessage[AM-SetResponse]: value of variable is not of type Message" } }
ตัวอย่างกฎข้อบกพร่อง
<faultrule name="VariableOfNonMsgType"></faultrule><FaultRule name="Assign Message Faults"> <Step> <Name>AM-CustomNonMessageTypeErrorResponse</Name> <Condition>(fault.name Matches "VariableOfNonMsgType") </Condition> </Step> <Step> <Name>AM-CustomSetVariableErrorResponse</Name> <Condition>(fault.name = "SetVariableFailed")</Condition> </Step> <Condition>(assignmessage.failed = true) </Condition> </FaultRule>
สคีมา
นโยบายแต่ละประเภทจะกำหนดโดยสคีมา XML (.xsd
) สคีมานโยบายสำหรับใช้อ้างอิง
ที่มีอยู่ใน GitHub
หัวข้อที่เกี่ยวข้อง
การทำงาน ตัวอย่างนโยบาย AssignMessage มีอยู่ในตัวอย่างแพลตฟอร์ม API
สำหรับตัวอย่างขั้นสูงขึ้นเกี่ยวกับวิธีลบล้าง target.url
จากพารามิเตอร์
ProxyEndpoint ดูบทความชุมชน Apigee นี้
หากต้องการดู "กำหนดเส้นทาง" ใช้งานจริงในนโยบายคำขอราคาเสนอบริการ โปรดดูตัวอย่าง "เรียนรู้โดยการดำเนินการ" ในตัวอย่าง Apigee GitHub เพียงโคลนที่เก็บและ ให้ทำตามคำแนะนำในหัวข้อนั้น ตัวอย่างใช้นโยบาย AssignMessage เพื่อกำหนดเส้นทางคำขอ จากนั้นใช้นโยบายคำขอราคาเสนอบริการเพื่อส่งคำขอไปยังบริการภายนอก