มีข้อพิจารณาหลายประการเกี่ยวกับการส่งคำขอและจัดการการตอบกลับจาก Open Cloud data store APIs
HTTP headers
เหมือนกับจุดสิ้นสุด Open Cloud ทั้งหมด คำขอ data store ที่ใช้การตรวจสอบสิทธิ์ API key ต้องรวม x-api-key header สำหรับข้อมูลเพิ่มเติม ดูที่ จัดการ API keys
- API key ที่ไม่ถูกต้องหรือขาดหายไปจะทำให้เกิดข้อผิดพลาด 401
- API key ที่ถูกต้องแต่ขาดสิทธิ์ที่ถูกต้อง จะทำให้เกิดข้อผิดพลาด 403
หากคำขอมีเนื้อหา เช่น คำขอสร้างหรือปรับปรุง ให้รวม headers Content-Type: application/json และ Content-Length โดยทั่วไปไคลเอนต์ส่วนใหญ่จะรวม headers เหล่านี้โดยอัตโนมัติ
Pagination
Data stores มักมีรายการมากมาย ซึ่งหมายความว่าโค้ดของคุณ โดยเฉพาะเมื่อเรียกใช้ รายการรายการ Data Store ต้องจัดการกับจำนวนผลลัพธ์และหน้าสูงสุด หากต้องการเรียนรู้เพิ่มเติม ดูที่ Pagination.
Filters
หากคุณใช้คำนำหน้าในชื่อของรายการ data store ของคุณ คุณอาจต้องการกรองการเรียก GET ของคุณ เช่นนี้:
def list_entries(universe, data_store, filter):
list_path = f'universes/{universe}/data-stores/{data_store}/entries'
url = base_url + list_path
return requests.get(url, params={'filter': f'id.startsWith("global/{filter}")'}, headers={apiHeaderKey: apiKey})
ไวยากรณ์ของการกรองมีความจำกัดอย่างมาก ดูเอกสารอ้างอิงสำหรับตัวกรองที่มีอยู่สำหรับ standard และ ordered data stores.
Allow missing flags
วิธีการ PATCH (อัปเดต) สำหรับ standard และ ordered data stores มีพารามิเตอร์ allow_missing หากตั้งค่าเป็น true พารามิเตอร์นี้จะทำให้คุณสามารถสร้างรายการที่ยังไม่มีอยู่ได้แทนที่จะทำให้เกิดข้อผิดพลาด ควรปล่อยพารามิเตอร์นี้ไว้ที่ค่าเริ่มต้น false ยกเว้นว่าคุณจะมีเหตุผลที่ดีไม่ทำเช่นนั้น การปรับปรุงรายการที่ยังไม่เคยถูกสร้างขึ้นมักแสดงถึงข้อผิดพลาดในตรรกะการเขียนโปรแกรม
Scopes
คำขอหลายรายการต้องการให้คุณระบุขอบเขต แม้ว่าอาจจะเป็นค่ามาตรฐาน global ขอบเขตเหล่านี้แตกต่างจากขอบเขตการอนุญาตและช่วยให้คุณสามารถแบ่งย่อยและจัดระเบียบรายการใน data store
อย่างไรก็ตาม แทนที่จะสร้างขอบเขตที่ไม่เป็นค่าเริ่มต้น เราขอแนะนำอย่างยิ่งให้ใช้คำนำหน้า หากต้องการเรียนรู้เพิ่มเติม ดูที่ การจัดทำรายการและคำนำหน้า.
Content-MD5
Open Cloud v1 API รองรับค่า MD5 checksum ที่เข้ารหัสเป็น base64 ในบางคำขอ ซึ่งสามารถช่วยตรวจจับปัญหาความถูกต้องของข้อมูล ภาษาโปรแกรมหลายภาษาได้มีฟังก์ชันในตัวเพื่อคำนวณค่าของ content-md5 header ตัวอย่างต่อไปนี้ใช้ Python:
$ echo "750" | python -c "import base64, hashlib; print(str(base64.b64encode(hashlib.md5(bytes(input(), encoding='utf8')).digest()), encoding='utf8'))"sTf90fedVsft8zZf6nUg8g==
หากคุณประสบปัญหาในการสร้างค่า content-md5 ที่ถูกต้อง คุณอาจต้องเข้ารหัสเนื้อหาคำขอของคุณในรูปแบบ UTF-8 ก่อนที่จะคำนวณ checksum.