คุณกำลังดูเอกสารประกอบ Apigee Edge
ไปที่
เอกสารประกอบเกี่ยวกับ Apigee X. ข้อมูล
ในหัวข้อนี้ คุณจะได้เรียนรู้วิธีการสร้างแมชอัปโดยใช้การวางองค์ประกอบนโยบาย องค์ประกอบนโยบายคือรูปแบบพร็อกซี Apigee ที่ให้คุณรวมผลลัพธ์จากแบ็กเอนด์หลายรายการได้ กำหนดเป้าหมายเป็นคำตอบเดียวโดยใช้นโยบาย
หากต้องการดูภาพรวมทั่วไปขององค์ประกอบของนโยบาย โปรดดู "รูปแบบองค์ประกอบของนโยบาย" ใน API Proxy Cookbook รูปแบบ
ดาวน์โหลดและลองใช้โค้ดตัวอย่าง
เกี่ยวกับตัวอย่างตำราอาหารนี้
ตัวอย่างตำราอาหารนี้จะแสดงรูปแบบพร็อกซี API ที่เรียกว่าองค์ประกอบนโยบาย รูปแบบนี้เป็นวิธีการหนึ่ง (และยังมีรูปแบบอื่นๆ) ในการรวมข้อมูลจากแหล่งข้อมูลแบ็กเอนด์หลายแหล่ง โดยทั่วไป หัวข้อนี้จะสาธิตวิธีรวมและเชื่อมโยงนโยบายเข้าด้วยกันเพื่อ ให้ผลลัพธ์ที่ต้องการ สำหรับภาพรวมทั่วไปของลวดลายนี้และรูปแบบที่เกี่ยวข้องอื่นๆ โปรดดู ตำราอาหารพร็อกซี API รูปแบบ
ตัวอย่างที่พูดถึงในที่นี้ใช้องค์ประกอบนโยบายเพื่อรวมข้อมูลจากทั้ง 2 ส่วนนี้ API สาธารณะ:
- Google Geocoding API: API นี้จะแปลงที่อยู่ (เช่น "1600 Amphitheatre Parkway, Mountain View, CA") ลงในพิกัดทางภูมิศาสตร์ (เช่น ละติจูด 37.423021 และลองจิจูด -122.083739)
- การยกระดับของ Google API API นี้มีอินเทอร์เฟซที่เรียบง่ายในการค้นหาตำแหน่งบนโลกเพื่อดูระดับความสูง ในตัวอย่างนี้ ระบบจะใช้พิกัดที่แสดงผลจาก Geocoding API เป็นอินพุต ลงใน API นี้
นักพัฒนาแอปจะเรียกพร็อกซี API นี้โดยใช้พารามิเตอร์การค้นหา 2 รายการ ได้แก่ รหัสไปรษณีย์ และประเทศ รหัส:
$ curl "http://{myorg}-test.apigee.net/policy-mashup-cookbook?country=us&postalcode=08008"
การตอบสนองจะเป็นออบเจ็กต์ JSON ซึ่งมีตำแหน่งที่ระบุพิกัดภูมิศาสตร์ (ละติจูด/ลองจิจูด) สำหรับ จุดศูนย์กลางของพื้นที่รหัสไปรษณีย์ที่ให้ไว้รวมกับระดับความสูงที่มีการระบุพิกัดทางภูมิศาสตร์ ตำแหน่งนั้น
{ "ElevationResponse":{ "status":"OK", "result":{ "location":{ "lat":"39.7500713", "lng":"-74.1357407" }, "elevation":"0.5045232", "resolution":"76.3516159" } } }
ก่อนเริ่มต้น
หากคุณต้องการอ่านภาพรวมคร่าวๆ ของรูปแบบองค์ประกอบของนโยบาย โปรดดูที่ "นโยบาย รูปแบบการเรียบเรียง" ใน API Proxy Cookbook รูปแบบ
ก่อนจะดูตัวอย่างตำราอาหารนี้ คุณควรทำความคุ้นเคยกับพื้นฐานเหล่านี้ด้วย แนวคิด
- นโยบายคืออะไรและวิธีแนบนโยบายกับพร็อกซี สำหรับการแนะนำนโยบายที่ดี ดู คืออะไร
- โครงสร้างของโฟลว์พร็อกซี API ตามที่อธิบายไว้ในการกำหนดค่าขั้นตอน โฟลว์ช่วยให้คุณ ระบุลำดับที่พร็อกซี API จะบังคับใช้นโยบาย ในตัวอย่างนี้ ระบบจะสร้างนโยบายและเพิ่มลงในโฟลว์ของพร็อกซี API
- วิธีจัดระเบียบโปรเจ็กต์พร็อกซี API ในระบบไฟล์ของคุณตามที่อธิบายไว้ใน ข้อมูลอ้างอิงการกำหนดค่าพร็อกซี API หัวข้อตำราอาหารนี้สาธิตการพัฒนาในเครื่อง (ไฟล์ ของระบบ) แทนที่จะเป็นการพัฒนาในระบบคลาวด์ ซึ่งคุณจะใช้ UI การจัดการเพื่อ พัฒนาพร็อกซี API
- ใช้การตรวจสอบคีย์ API นี่คือรูปแบบการรักษาความปลอดภัยจากแอปที่ง่ายที่สุดที่คุณ กำหนดค่า API สำหรับข้อมูลเพิ่มเติม โปรดดูที่ API คุณยังสามารถทำตามขั้นตอนการรักษาความปลอดภัย บทแนะนำ API โดยต้องใช้คีย์ API
- ความรู้ในการใช้งาน XML ในตัวอย่างนี้ เราสร้างพร็อกซี API และ ที่มีไฟล์ XML ที่อยู่ในระบบไฟล์
หากคุณดาวน์โหลดโค้ดตัวอย่างแล้ว คุณสามารถค้นหาไฟล์ทั้งหมดที่กล่าวถึงใน ในโฟลเดอร์ตัวอย่าง mashup-policy-cookbook ส่วนต่อไปนี้ อธิบายโค้ดตัวอย่างโดยละเอียด
ดำเนินไปอย่างลื่นไหล
ก่อนจะไปดูนโยบายต่างๆ เรามาดูขั้นตอนหลักๆ ของตัวอย่างกัน พร็อกซี API XML โฟลว์ที่แสดงด้านล่างนี้ ช่วยให้เรารู้ข้อมูลมากมายเกี่ยวกับพร็อกซีนี้ และนโยบายที่ ใช้ และที่ที่เรียกนโยบายเหล่านี้
ในการดาวน์โหลดตัวอย่าง คุณสามารถดู XML นี้ได้ในไฟล์
doc-samples/policy-mashup-cookbook/apiproxy/proxies/default.xml
<ProxyEndpoint name="default"> <Flows> <Flow name="default"> <Request> <!-- Generate request message for the Google Geocoding API --> <Step><Name>GenerateGeocodingRequest</Name></Step> <!-- Call the Google Geocoding API --> <Step><Name>ExecuteGeocodingRequest</Name></Step> <!-- Parse the response and set variables --> <Step><Name>ParseGeocodingResponse</Name></Step> <!-- Generate request message for the Google Elevation API --> <Step><Name>AssignElevationParameters</Name></Step> </Request> <Response> <!-- Parse the response message from the Elevation API --> <Step><Name>ParseElevationResponse</Name></Step> <!-- Generate the final JSON-formatted response with JavaScript --> <Step><Name>GenerateResponse</Name></Step> </Response> </Flow> </Flows> <HTTPProxyConnection> <!-- Add a base path to the ProxyEndpoint for URI pattern matching--> <BasePath>/policy-mashup-cookbook</BasePath> <!-- Listen on both HTTP and HTTPS endpoints --> <VirtualHost>default</VirtualHost> <VirtualHost>secure</VirtualHost> </HTTPProxyConnection> <RouteRule name="default"> <!-- Connect ProxyEndpoint to named TargetEndpoint under /targets --> <TargetEndpoint>default</TargetEndpoint> </RouteRule> </ProxyEndpoint>
นี่คือสรุปองค์ประกอบของขั้นตอน
- <Request> - <Request> องค์ประกอบประกอบด้วย <Step> จากองค์ประกอบเหล่านี้ แต่ละขั้นตอนจะเรียกหนึ่งในนโยบายที่เราจะสร้างผ่านนโยบายที่เหลือ ของหัวข้อนี้ นโยบายเหล่านี้เกี่ยวข้องกับการสร้างข้อความคำขอ การส่ง และ แยกวิเคราะห์คำตอบ เมื่อจบหัวข้อนี้ คุณจะเข้าใจบทบาทของ
- <Response> - <การตอบกลับ> องค์ประกอบยังมี <Steps> ขั้นตอนเหล่านี้ยังเรียกใช้นโยบายที่รับผิดชอบในการประมวลผลขั้นสุดท้าย การตอบสนองจากปลายทางเป้าหมาย (Google Elevation API)
- <HttpProxyConnection> - อีลิเมนต์นี้จะระบุรายละเอียดเกี่ยวกับ วิธีที่แอปจะเชื่อมต่อกับพร็อกซี API นี้ รวมถึง <BasePath> ซึ่งระบุวิธี ระบบจะเรียก API นี้
- <RouteRule> - องค์ประกอบนี้ระบุสิ่งที่เกิดขึ้นทันที หลังจากระบบประมวลผลข้อความคำขอขาเข้าแล้ว ในกรณีนี้จะมีการเรียก TargetEndpoint เราจะพูดคุยเพิ่มเติมเกี่ยวกับขั้นตอนที่สำคัญนี้ภายหลังในหัวข้อนี้
การสร้างนโยบาย
ส่วนต่อไปนี้จะอธิบายถึงนโยบายแต่ละข้อที่เป็นส่วนประกอบของนโยบายนี้
สร้าง AssignMessage แรก นโยบาย
นโยบาย AssignMessage แรก รายการด้านล่างนี้ สร้างข้อความคำขอที่จะส่งไปยัง Google Geocoding service.
เรามาเริ่มกันที่โค้ดของนโยบาย จากนั้นเราจะอธิบายองค์ประกอบของนโยบายโดยละเอียด ใน
ตัวอย่างการดาวน์โหลด คุณสามารถดู XML นี้ได้ในไฟล์
doc-samples/policy-mashup-cookbook/apiproxy/policies/GenerateGeocodingRequest.xml
<AssignMessage name="GenerateGeocodingRequest"> <AssignTo createNew="true" type="request">GeocodingRequest</AssignTo> <Set> <QueryParams> <QueryParam name="address">{request.queryparam.postalcode}</QueryParam> <QueryParam name="region">{request.queryparam.country}</QueryParam> <QueryParam name="sensor">false</QueryParam> </QueryParams> <Verb>GET</Verb> </Set> <!-- Set variables for use in the final response --> <AssignVariable> <Name>PostalCode</Name> <Ref>request.queryparam.postalcode</Ref> </AssignVariable> <AssignVariable> <Name>Country</Name> <Ref>request.queryparam.country</Ref> </AssignVariable> </AssignMessage>
คำอธิบายสั้นๆ ขององค์ประกอบในนโยบายนี้มีดังนี้ คุณอ่านเพิ่มเติมเกี่ยวกับเรื่องนี้ได้ นโยบายใน มอบหมาย นโยบายข้อความ
- <AssignMessage name> - ตั้งชื่อนโยบายนี้ ชื่อคือ ใช้เมื่อมีการอ้างอิงนโยบายในขั้นตอนหนึ่งๆ
- <AssignTo> - สร้างตัวแปรที่มีชื่อชื่อว่า GeocodingRequest ตัวแปรนี้สรุปออบเจ็กต์คำขอที่จะส่งไปยังแบ็กเอนด์โดย นโยบายข้อความไฮไลต์บริการ
- <QueryParams> - ตั้งค่าพารามิเตอร์การค้นหาที่จำเป็นสำหรับการเรียก
การเรียก API แบ็กเอนด์ ในกรณีนี้ Geocoding API จำเป็นต้องรู้ตำแหน่งซึ่ง
แสดงด้วยรหัสไปรษณีย์และรหัสประเทศ โดยผู้ใช้แอปให้ข้อมูลนี้และ
เราก็แยกออกมาไว้ตรงนี้ API ต้องใช้พารามิเตอร์
sensor
และ จริงหรือเท็จ และเราเพียงฮาร์ดโค้ดไว้ให้เป็น false ที่นี่ - <Verb> - ในกรณีนี้ เราจะส่งคำขอ GET ง่ายๆ ไปยังเมธอด API
- <AssignVariable> - ตัวแปรเหล่านี้จัดเก็บค่าที่เรามีอยู่ ที่ส่งไปยัง API ในตัวอย่างนี้ คุณจะเข้าถึงตัวแปรได้ภายหลังในคำตอบ ส่งคืนให้ลูกค้า
ส่งคำขอด้วย Serviceข้อความไฮไลต์
ขั้นตอนถัดไปในลำดับการเรียบเรียงนโยบายคือการสร้างนโยบาย ServiceCallout นโยบาย Serviceข้อความไฮไลต์ ที่แสดงไว้ด้านล่างนี้จะส่งออบเจ็กต์คำขอที่เราสร้างขึ้นใน นโยบาย AssignMessage ก่อนหน้าของบริการ Google Geocoding และบันทึกผลลัพธ์ใน ที่เรียกว่า GeocodingResponse
ตอนนี้เรามาดูโค้ดกันก่อน แล้วจะมีคำอธิบายอย่างละเอียดดังนี้ คุณสามารถอ่าน
ดูข้อมูลเพิ่มเติมเกี่ยวกับนโยบายนี้ในข้อความไฮไลต์บริการ
ในการดาวน์โหลดตัวอย่าง คุณสามารถดู XML นี้ได้ในไฟล์
doc-samples/policy-mashup-cookbook/apiproxy/policies/ExecuteGeocodingRequest.xml
<ServiceCallout name="ExecuteGeocodingRequest"> <Request variable="GeocodingRequest"/> <Response>GeocodingResponse</Response> <HTTPTargetConnection> <URL>http://maps.googleapis.com/maps/api/geocode/json</URL> </HTTPTargetConnection> </ServiceCallout>
คำอธิบายสั้นๆ เกี่ยวกับองค์ประกอบของนโยบายนี้มีดังนี้
- <ServiceCallout> - เช่นเดียวกับนโยบายก่อนหน้านี้ นโยบายนี้มี ชื่อ
- <RequestVariable> - คือตัวแปรที่สร้างขึ้นใน นโยบาย AssignMessage ซึ่งจะสรุปคำขอที่ไปยัง API แบ็กเอนด์
- <Response> - องค์ประกอบนี้จะตั้งชื่อตัวแปรที่การตอบกลับ ไว้ คุณจะเห็นว่าตัวแปรนี้เข้าถึงตัวแปร ExtractVariable ในภายหลัง
- <HTTPTargetConnection> - ระบุ URL เป้าหมายของแบ็กเอนด์ API ในกรณีนี้ เราจะระบุว่า API จะส่งการตอบกลับ JSON กลับมา
ตอนนี้เรามี 2 นโยบาย นโยบายแรกจะระบุข้อมูลคำขอที่ต้องใช้ API แบ็กเอนด์ (API การเข้ารหัสพิกัดภูมิศาสตร์ของ Google) และอีกอันที่ 2 คือตัวส่งคำขอจริงๆ ไปยัง API แบ็กเอนด์ ต่อไปเราจะจัดการคำตอบ
แยกวิเคราะห์คำตอบด้วย ExtractVariables
นโยบาย ExtractVariable มีกลไกง่ายๆ ในการแยกวิเคราะห์เนื้อหาจาก ข้อความตอบกลับที่ได้รับจากนโยบาย Serviceข้อความไฮไลต์ ใช้ ExtractVariable เพื่อแยกวิเคราะห์ JSON หรือ XML หรือสามารถใช้แยกเนื้อหาจากเส้นทาง URI, ส่วนหัว HTTP หรือคำค้นหา และพารามิเตอร์ฟอร์ม
ต่อไปนี้คือรายการของนโยบาย ExtractVariable คุณสามารถอ่านเพิ่มเติมเกี่ยวกับนโยบายนี้ได้ใน
ตัวแปรการดึงข้อมูล
ในการดาวน์โหลดตัวอย่าง คุณสามารถดู XML นี้ได้ในไฟล์
doc-samples/policy-mashup-cookbook/apiproxy/policies/ParseGeocodingResponse.xml
<ExtractVariables name="ParseGeocodingResponse"> <Source>GeocodingResponse</Source> <VariablePrefix>geocoderesponse</VariablePrefix> <JSONPayload> <Variable name="latitude"> <JSONPath>$.results[0].geometry.location.lat</JSONPath> </Variable> <Variable name="longitude"> <JSONPath>$.results[0].geometry.location.lng</JSONPath> </Variable> </JSONPayload> </ExtractVariables>
องค์ประกอบหลักของนโยบาย ExtractVariable ได้แก่
- <ExtractVariable name> - ชื่อนโยบายจะใช้ในการ อ้างอิงถึงนโยบายเมื่อใช้ในโฟลว์
- <Source> - ระบุตัวแปรการตอบกลับที่เราสร้าง นโยบายคำขอราคาเสนอบริการ นี่คือตัวแปรที่นโยบายนี้ดึงข้อมูล
- <VariablePrefix> - คำนำหน้าตัวแปรระบุเนมสเปซสำหรับ ตัวแปรอื่นๆ ที่สร้างในนโยบายนี้ คำนำหน้าสามารถใช้ชื่อใดก็ได้ ยกเว้นชื่อที่สงวนไว้ ตามที่กำหนดโดย ตัวแปรที่กำหนดล่วงหน้า
- <JSONPayload> - องค์ประกอบนี้จะเรียกข้อมูลการตอบสนองที่ ที่เราสนใจและใส่ไว้ในตัวแปรที่มีชื่อ ในความเป็นจริง Geocoding API จะแสดงผล ข้อมูลมากกว่าละติจูดและลองจิจูด อย่างไรก็ตาม นี่เป็นเพียงค่าเดียวที่เราต้องการ สำหรับตัวอย่างนี้ คุณสามารถดูการแสดงผลที่สมบูรณ์ของ JSON ที่แสดงผลโดย Geocoding API ใน API เอกสารประกอบ ค่าของGeometry.location.lat และ childmetry.location.lng เป็นเพียง 2 จากหลายช่องในออบเจ็กต์ JSON ที่แสดงผล
อาจสังเกตได้ไม่ชัดเจนนัก แต่คุณควรเห็นว่า ExtractVariable ทำให้เกิด ตัวแปรที่ชื่อประกอบด้วยคำนำหน้าตัวแปร (การตอบสนองพิกัดภูมิศาสตร์) และค่าตามจริง ชื่อตัวแปรที่ระบุไว้ในนโยบาย ตัวแปรเหล่านี้จัดเก็บไว้ในส่วน พร็อกซี API และจะใช้ได้กับนโยบายอื่นๆ ภายในขั้นตอนของพร็อกซี โดยคุณจะ ดู ตัวแปรมีดังนี้
- geocoderesponse.latitude
- geocoderesponse.longitude
ตอนนี้งานส่วนใหญ่เสร็จสิ้นแล้ว เราได้จัดทำนโยบาย 3 รายการที่ประกอบด้วยนโยบาย เรียก API แบ็กเอนด์ และแยกวิเคราะห์ข้อมูล JSON ที่แสดงผล ในขั้นตอนสุดท้าย เราจะป้อนข้อมูล ข้อมูลจากส่วนนี้ของโฟลว์ไปยังนโยบาย AssignMessage อื่น เรียกใช้แบ็กเอนด์ที่ 2 API (Google Elevation API) และส่งข้อมูลที่ประกอบขึ้นให้นักพัฒนาแอปทราบ
สร้างองค์ประกอบ ส่งคำขอที่มี AssignMessage
นโยบาย AssignMessage ต่อไปนี้ใช้ตัวแปรที่แสดงผลจากแบ็กเอนด์แรก (Google การเข้ารหัสพิกัดภูมิศาสตร์) ที่เราจัดเก็บไว้ และนำไปเสียบเข้ากับคำขอที่กำหนดเส้นทางสำหรับ API ที่สอง (Google ระดับความสูง) ดังที่ได้กล่าวไว้ก่อนหน้านี้ ตัวแปรเหล่านี้คือ videoresponse.latitude และ geocoderesponse.longitude.
ในการดาวน์โหลดตัวอย่าง คุณสามารถดู XML นี้ได้ในไฟล์
doc-samples/policy-mashup-cookbook/apiproxy/policies/AssignElevationParameters.xml
<AssignMessage name="AssignElevationParameters"> <Remove> <QueryParams> <QueryParam name="country"/> <QueryParam name="postalcode"/> </QueryParams> </Remove> <Set> <QueryParams> <QueryParam name="locations">{geocoderesponse.latitude},{geocoderesponse.longitude}</QueryParam> <QueryParam name="sensor">false</QueryParam> </QueryParams> </Set> </AssignMessage>
ถ้าคุณตรวจสอบ Google Elevation API คุณจะพบว่าระบบต้องใช้พารามิเตอร์การค้นหา 2 ตัว
ชื่อแรกชื่อว่า locations
และค่าคือละติจูดและลองจิจูด
(ค่าที่คั่นด้วยคอมมา) พารามิเตอร์อีกรายการคือ sensor
ซึ่งต้องระบุและ
เป็นจริงหรือเท็จ สิ่งสำคัญที่สุดที่ควรทราบในตอนนี้คือคำขอ
ข้อความที่เราสร้างที่นี่ไม่จำเป็นต้องใช้ Serviceข้อความไฮไลต์ เราไม่จำเป็นต้องโทรหา
API จาก Servicecallout ได้ในตอนนี้ เนื่องจากเราสามารถเรียกใช้ API แบ็กเอนด์จากพร็อกซี
TargetEndpoint ถ้าคุณลองพิจารณาดู เรามีข้อมูลทั้งหมดที่จำเป็นในการเรียก Google Elevations
API ข้อความคำขอที่สร้างขึ้นในขั้นตอนนี้ไม่จำเป็นต้องใช้ Serviceข้อความไฮไลต์ เนื่องจาก
คำขอที่สร้างขึ้นสำหรับไปป์ไลน์คำขอหลัก ซึ่งจะส่งต่อโดย
ProxyEndpoint ไปยัง TargetEndpoint โดยติดตาม RouteRule ที่กำหนดค่าไว้สำหรับพร็อกซี API นี้
TargetEndpoint จะจัดการการเชื่อมต่อด้วย API ระยะไกล (อย่าลืมว่า URL สำหรับฟิลด์
มีการกำหนด API ระดับความสูงใน HTTPConnection สำหรับ TargetEndpoint API ระดับความสูง
หากต้องการทราบข้อมูลเพิ่มเติม QueryParams ที่เราจัดเก็บไว้ก่อนหน้านี้
country
และ postalcode
ไม่จำเป็นอีกต่อไป เราจึงนำรายการดังกล่าวออก
ที่นี่
หยุดชั่วคราว: กลับไปที่โฟลว์
ณ จุดนี้ คุณอาจสงสัยว่าเหตุใดเราจึงไม่สร้างนโยบายคำขอราคาเสนอบริการอีก หลัง
เราได้สร้างข้อความเพิ่มเติม แล้วข้อความนั้นส่งไปยังเป้าหมาย ซึ่งก็คือ
API ระดับความสูง คำตอบอยู่ใน <RouteRule> ของโฟลว์ได้ <RouteRule>
ระบุสิ่งที่ต้องทำกับข้อความคำขอที่เหลืออยู่หลังจาก <Request> ส่วนหนึ่งของ
ดำเนินการตามขั้นตอนนี้แล้ว TargetEndpoint ที่ระบุโดย <RouteRule> นี้ บอก
พร็อกซี API สำหรับส่งข้อความ
ไปยัง http://maps.googleapis.com/maps/api/elevation/xml
หากดาวน์โหลดพร็อกซี API ตัวอย่าง คุณจะดู TargetProxy XML ในไฟล์ได้
doc-samples/policy-mashup-cookbook/apiproxy/targets/default.xml
<TargetEndpoint name="default"> <HTTPTargetConnection> <!-- This is where we define the target. For this sample we just use a simple URL. --> <URL>http://maps.googleapis.com/maps/api/elevation/xml</URL> </HTTPTargetConnection> </TargetEndpoint>
ตอนนี้ เราต้องประมวลผลการตอบกลับจาก Google Elevation API และ เสร็จสิ้น
แปลงการตอบกลับจาก XML เป็น JSON
ในตัวอย่างนี้ การตอบกลับจาก Google Elevation API จะส่งกลับเป็น XML สำหรับ "extra เครดิต" มาเพิ่มนโยบายอีก 1 รายการในการรวมของเรา เพื่อเปลี่ยนการตอบกลับจาก XML เป็น JSON
ตัวอย่างนี้ใช้นโยบาย JavaScript ชื่อ GenerateResponse พร้อมไฟล์ทรัพยากร ที่มีโค้ด JavaScript อยู่เพื่อดำเนินการแปลง ด้านล่างคือ คำจำกัดความของนโยบาย GenerateResponse มีดังนี้
<Javascript name="GenerateResponse" timeout="10000"> <ResourceURL>jsc://GenerateResponse.js</ResourceURL> </Javascript>
ไฟล์ทรัพยากร GenerateResponse.js ประกอบด้วย JavaScript ที่ใช้เพื่อดำเนินการ
Conversion ดูรหัสได้ใน
ไฟล์ doc-samples/policy-mashup-cookbook/apiproxy/resources/JSC/GenerateResponse.js
Apigee ยังมีนโยบายที่พร้อมใช้งานทันที นั่นคือ XMLToJSON เพื่อแปลง XML เป็น JSON คุณสามารถ
แก้ไข ProxyEndpoint เพื่อใช้นโยบาย xmltojson
ที่แสดงด้านล่าง
แทน
<XMLToJSON name="xmltojson"> <Options> </Options> <OutputVariable>response</OutputVariable> <Source>response</Source> </XMLToJSON>
ทดสอบตัวอย่าง
โปรดลองดาวน์โหลด ทำให้ใช้งานได้ และเรียกใช้ ตัวอย่างของ policy-mashup-cookbook ซึ่งดูได้ในโฟลเดอร์ตัวอย่างเอกสารใน GitHub สำหรับที่เก็บตัวอย่าง Apigee Edge เพียงแค่ ทำตามวิธีการในไฟล์ README ในโฟลเดอร์ policy-mashup-cookbook หรือ ให้ทำตามคำแนะนำสั้นๆ ที่นี่: การใช้ ตัวอย่างพร็อกซี API
กล่าวโดยสรุป คุณเรียกใช้ Composite API ได้ดังนี้ แทนที่ {myorg} ด้วย ชื่อองค์กร:
$ curl "http://{myorg}-test.apigee.net/policy-mashup-cookbook?country=us&postalcode=08008"
คำตอบประกอบด้วยตำแหน่งที่ระบุพิกัดทางภูมิศาสตร์สำหรับจุดศูนย์กลางของรหัสไปรษณีย์ที่ได้รับจาก ผู้ใช้ปลายทางของแอปรวมกับระดับความสูงที่ตำแหน่งที่ระบุพิกัดทางภูมิศาสตร์นั้น ข้อมูลเดิมคือ ที่ดึงมาจาก API แบ็กเอนด์ 2 รายการ รวมเข้ากับนโยบายที่แนบอยู่กับพร็อกซี API และ ส่งกลับไปยังไคลเอ็นต์ในการตอบสนองครั้งเดียว
{ "country":"us", "postalcode":"08008", "elevation":{ "meters":0.5045232, "feet":1.6552599030345978 }, "location":{ "latitude":39.75007129999999, "longitude":-74.1357407 } }
สรุป
หัวข้อตำราอาหารนี้อธิบายวิธีใช้รูปแบบองค์ประกอบของนโยบายเพื่อสร้างแมชอัป จากแหล่งข้อมูลแบ็กเอนด์หลายแหล่ง องค์ประกอบของนโยบายเป็นรูปแบบทั่วไปที่ใช้ใน API การพัฒนาพร็อกซีสำหรับเพิ่มฟังก์ชันของครีเอทีฟโฆษณาลงใน API ของคุณ