API ฐานข้อมูล Firebase REST

การใช้งาน API

คุณสามารถใช้ URL ฐานข้อมูลเรียลไทม์ของ Firebase เป็นจุดสิ้นสุด REST ได้ สิ่งที่คุณต้องทำคือเพิ่ม .json ต่อท้าย URL และส่งคำขอจากไคลเอ็นต์ HTTPS ที่คุณชื่นชอบ

ต้องใช้ HTTPS Firebase ตอบสนองต่อการรับส่งข้อมูลที่เข้ารหัสเท่านั้นเพื่อให้ข้อมูลของคุณยังคงปลอดภัย

GET - การอ่านข้อมูล

ข้อมูลจากฐานข้อมูลเรียลไทม์ของคุณสามารถอ่านได้โดยการออกคำขอ HTTP GET ไปยังปลายทาง ตัวอย่างต่อไปนี้สาธิตวิธีที่คุณอาจดึงข้อมูลชื่อผู้ใช้ที่คุณจัดเก็บไว้ในฐานข้อมูลเรียลไทม์ก่อนหน้านี้

curl 'https://[PROJECT_ID].firebaseio.com/users/jack/name.json'

คำขอที่สำเร็จจะแสดงด้วยรหัสสถานะ HTTP 200 OK การตอบสนองประกอบด้วยข้อมูลที่เกี่ยวข้องกับเส้นทางในคำขอ GET

{ "first": "Jack", "last": "Sparrow" }

PUT - การเขียนข้อมูล

คุณสามารถเขียนข้อมูลด้วยคำขอ PUT

curl -X PUT -d '{ "first": "Jack", "last": "Sparrow" }' \
  'https://[PROJECT_ID].firebaseio.com/users/jack/name.json'

คำขอที่สำเร็จจะแสดงด้วยรหัสสถานะ HTTP 200 OK การตอบสนองประกอบด้วยข้อมูลที่ระบุในคำขอ PUT

{ "first": "Jack", "last": "Sparrow" }

POST - การพุชข้อมูล

เพื่อให้บรรลุผลเทียบเท่ากับ JavaScript push() วิธีการ (ดู รายการข้อมูล ) คุณสามารถส่งคำขอ POST ได้

curl -X POST -d '{"user_id" : "jack", "text" : "Ahoy!"}' \
  'https://[PROJECT_ID].firebaseio.com/message_list.json'

คำขอที่สำเร็จจะแสดงด้วยรหัสสถานะ HTTP 200 OK การตอบสนองประกอบด้วยชื่อลูกของข้อมูลใหม่ที่ระบุในคำขอ POST

{ "name": "-INOQPH-aV_psbk3ZXEX" }

PATCH - การอัปเดตข้อมูล

คุณสามารถอัปเดตรายการย่อยเฉพาะในสถานที่โดยไม่ต้องเขียนทับข้อมูลที่มีอยู่โดยใช้คำขอ PATCH ลูกที่มีชื่อในข้อมูลที่เขียนด้วย PATCH จะถูกเขียนทับ แต่ลูกที่ถูกละเว้นจะไม่ถูกลบ ซึ่งเทียบเท่ากับฟังก์ชัน JavaScript update()

curl -X PATCH -d '{"last":"Jones"}' \
 'https://[PROJECT_ID].firebaseio.com/users/jack/name/.json'

คำขอที่สำเร็จจะแสดงด้วยรหัสสถานะ HTTP 200 OK การตอบสนองมีข้อมูลที่ระบุในคำขอ PATCH

{ "last": "Jones" }

ลบ - การลบข้อมูล

คุณสามารถลบข้อมูลด้วยคำขอ DELETE :

curl -X DELETE \
  'https://[PROJECT_ID].firebaseio.com/users/jack/name/last.json'

คำขอ DELETE ที่สำเร็จจะถูกระบุด้วยรหัสสถานะ HTTP 200 OK พร้อมการตอบสนองที่มี JSON null

แทนที่วิธีการ

หากคุณทำการเรียก REST จากเบราว์เซอร์ที่ไม่รองรับวิธีการก่อนหน้า คุณสามารถแทนที่วิธีการร้องขอได้โดยการร้องขอ POST และตั้งค่าวิธีการของคุณโดยใช้ส่วนหัวคำขอ X-HTTP-Method-Override

curl -X POST -H "X-HTTP-Method-Override: DELETE" \
  'https://[PROJECT_ID].firebaseio.com/users/jack/name/last.json'

คุณยังสามารถใช้พารามิเตอร์การค้นหา x-http-method-override อีกด้วย

curl -X POST \
  'https://[PROJECT_ID].firebaseio.com/users/jack/name/last.json?x-http-method-override=DELETE'

คำขอแบบมีเงื่อนไข

คำขอแบบมีเงื่อนไข ซึ่งเทียบเท่ากับ REST ของการดำเนินการธุรกรรม SDK จะอัปเดตข้อมูลตามเงื่อนไขที่กำหนด ดูภาพรวมของเวิร์กโฟลว์และเรียนรู้เพิ่มเติมเกี่ยวกับการร้องขอแบบมีเงื่อนไขสำหรับ REST ใน การบันทึกข้อมูล

Firebase ETag

Firebase ETag คือตัวระบุที่ไม่ซ้ำกันสำหรับข้อมูลปัจจุบันในตำแหน่งที่ระบุ หากข้อมูลเปลี่ยนแปลงที่ตำแหน่งนั้น ETag ก็เปลี่ยนแปลงเช่นกัน ต้องระบุ Firebase ETag ในส่วนหัวสำหรับคำขอ REST เริ่มต้น (โดยทั่วไปคือ GET แต่อาจเป็นอย่างอื่นที่ไม่ใช่ PATCH )

curl -i 'https://[PROJECT_ID].firebaseio.com/posts/12345/upvotes.json' -H 'X-Firebase-ETag: true'

ถ้าตรงกัน

เงื่อนไข if-match ระบุค่า ETag สำหรับข้อมูลที่คุณต้องการอัปเดต หากคุณใช้เงื่อนไข ฐานข้อมูลเรียลไทม์จะดำเนินการเฉพาะคำขอที่ ETag ที่ระบุในคำขอเขียนตรงกับ ETag ของข้อมูลที่มีอยู่ในฐานข้อมูลเท่านั้น ดึงข้อมูล ETag ที่ตำแหน่งด้วยคำขอ Firebase ETag หากคุณต้องการเขียนทับตำแหน่งใดๆ ที่เป็นโมฆะ ให้ใช้ null_etag

curl -iX PUT -d '11' 'https://[PROJECT_ID].firebaseio.com/posts/12345/upvotes.json' -H 'if-match: [ETAG_VALUE]'

การตอบสนองที่คาดหวัง

ตารางต่อไปนี้แสดงภาพรวมของการตอบสนองที่คาดหวังสำหรับคำขอแต่ละประเภท โดยอิงตามการจับคู่ ETag

ประเภทคำขอ 'X-Firebase-ETag: จริง' การแข่งขัน ETag
if_match: <matching etag>
ETag ไม่ตรงกัน
if_match: <no matching etag>
รับ สถานะ/เนื้อหาการตอบกลับ 200: "<data_at_path>" 400: "...ไม่รองรับ.." 400: "...ไม่รองรับ.."
เพิ่มส่วนหัว ETag: <ETag_of_data> ไม่มี ไม่มี
ใส่ สถานะ/เนื้อหาการตอบกลับ 200: "<put_data>" 200: "<put_data>" 412: "...ETag ไม่ตรงกัน.."
เพิ่มส่วนหัว ETag: <ETag_of_put_data> ไม่มี ETag: <database_ETag>
โพสต์ สถานะ/เนื้อหาการตอบกลับ 200: "<post_data>" 400: "...ไม่รองรับ.." 400: "...ไม่รองรับ.."
เพิ่มส่วนหัว ETag: <ETag_of_post_data> ไม่มี ไม่มี
ปะ สถานะ/เนื้อหาการตอบกลับ 400: "...ไม่รองรับ.." 400: "...ไม่รองรับ.." 400: "...ไม่รองรับ.."
เพิ่มส่วนหัว ไม่มี ไม่มี ไม่มี
ลบ สถานะ/เนื้อหาการตอบกลับ 200: เป็นโมฆะ 200: "<data_after_put>" 412: "...ETag ไม่ตรงกัน.."
เพิ่มส่วนหัว ETag: <ETag_of_null> ไม่มี ETag: <database_ETag>

พารามิเตอร์แบบสอบถาม

Firebase Database REST API ยอมรับพารามิเตอร์และค่าการสืบค้นต่อไปนี้:

เข้าถึง_token

รองรับคำขอทุกประเภท ตรวจสอบสิทธิ์คำขอนี้เพื่ออนุญาตการเข้าถึงข้อมูลที่ได้รับการป้องกันโดยกฎความปลอดภัยของฐานข้อมูล Firebase Realtime ดู เอกสารประกอบการรับรองความถูกต้อง REST สำหรับรายละเอียด

curl 'https://[PROJECT_ID].firebaseio/users/jack/name.json?access_token=CREDENTIAL'

ตื้น

นี่คือฟีเจอร์ขั้นสูงที่ออกแบบมาเพื่อช่วยให้คุณทำงานกับชุดข้อมูลขนาดใหญ่โดยไม่จำเป็นต้องดาวน์โหลดทุกอย่าง ตั้งค่านี้เป็น true เพื่อจำกัดความลึกของข้อมูลที่ส่งกลับที่ตำแหน่งหนึ่ง หากข้อมูลที่ตำแหน่งนั้นเป็น JSON ดั้งเดิม (สตริง ตัวเลข หรือบูลีน) ค่าของข้อมูลนั้นก็จะถูกส่งกลับ หากสแนปชอตข้อมูลที่ตำแหน่งนั้นเป็นออบเจ็กต์ JSON ค่าของแต่ละคีย์จะถูกตัดทอนให้เป็น true

ข้อโต้แย้ง วิธีส่วนที่เหลือ คำอธิบาย
ตื้น รับ จำกัดความลึกของการตอบสนอง
curl 'https://[PROJECT_ID].firebaseio/.json?shallow=true'

โปรดทราบว่า shallow ไม่สามารถผสมกับพารามิเตอร์การค้นหาอื่นๆ ได้

พิมพ์

จัดรูปแบบข้อมูลที่ส่งคืนในการตอบกลับจากเซิร์ฟเวอร์

ข้อโต้แย้ง วิธีส่วนที่เหลือ คำอธิบาย
สวย รับ วาง โพสต์ แพทช์ ลบ ดูข้อมูลในรูปแบบที่มนุษย์สามารถอ่านได้
เงียบ รับ ใส่ โพสต์ แพตช์ ใช้เพื่อระงับเอาต์พุตจากเซิร์ฟเวอร์เมื่อเขียนข้อมูล ผลลัพธ์ที่ได้จะว่างเปล่าและระบุด้วยรหัสสถานะ 204 No Content HTTP
curl 'https://[PROJECT_ID].firebaseio.com/users/jack/name.json?print=pretty'
curl -X PUT -d '{ "first": "Jack", "last": "Sparrow" }' \
  'https://[PROJECT_ID].firebaseio.com/users/jack/name.json?print=silent'

โทรกลับ

รองรับโดย GET เท่านั้น หากต้องการโทร REST จากเว็บเบราว์เซอร์ข้ามโดเมน คุณสามารถใช้ JSONP เพื่อรวมการตอบกลับในฟังก์ชันเรียกกลับ JavaScript เพิ่ม callback= เพื่อให้ REST API ตัดข้อมูลที่ส่งคืนในฟังก์ชัน callback ที่คุณระบุ

<script>
  function gotData(data) {
    console.log(data);
  }
</script>
<script src="https://[PROJECT_ID].firebaseio.com/.json?callback=gotData"></script>

รูปแบบ

หากตั้งค่าเป็น export เซิร์ฟเวอร์จะเข้ารหัสลำดับความสำคัญในการตอบกลับ

ข้อโต้แย้ง วิธีที่เหลือ คำอธิบาย
ส่งออก รับ รวมข้อมูลลำดับความสำคัญในการตอบกลับ
curl 'https://[PROJECT_ID].firebaseio.com/.json?format=export'

ดาวน์โหลด

รองรับโดย GET เท่านั้น หากคุณต้องการทริกเกอร์การดาวน์โหลดไฟล์ข้อมูลจากเว็บเบราว์เซอร์ ให้เพิ่ม download= ซึ่งทำให้บริการ REST เพิ่มส่วนหัวที่เหมาะสมเพื่อให้เบราว์เซอร์รู้ว่าจะบันทึกข้อมูลลงในไฟล์

curl 'https://[PROJECT_ID].firebaseio/.json?download=myfilename.txt'

หมดเวลา

ใช้ตัวเลือกนี้เพื่อจำกัดระยะเวลาในการอ่านบนฝั่งเซิร์ฟเวอร์ หากคำขออ่านไม่เสร็จสิ้นภายในเวลาที่กำหนด คำขอจะยุติลงด้วยข้อผิดพลาด HTTP 400 สิ่งนี้มีประโยชน์อย่างยิ่งเมื่อคุณคาดว่าจะมีการถ่ายโอนข้อมูลเพียงเล็กน้อย และไม่ต้องการรอนานเกินไปในการดึงแผนผังย่อยที่อาจมีขนาดใหญ่ เวลาในการอ่านจริงอาจแตกต่างกันไปตามขนาดข้อมูลและการแคช

ระบุ timeouts โดยใช้รูปแบบต่อไปนี้: 3ms , 3s หรือ 3min พร้อมตัวเลขและหน่วย หากไม่ได้ระบุ ระบบจะใช้ timeout สูงสุด 15min หาก timeout ไม่เป็นค่าบวกหรือเกินค่าสูงสุด คำขอจะถูกปฏิเสธโดยมีข้อผิดพลาด HTTP 400

writeSizeLimit

หากต้องการจำกัดขนาดของการเขียน คุณสามารถระบุพารามิเตอร์เคียวรี writeSizeLimit เป็น tiny (target=1s) small (target=10s) medium (target=30s) large (target=60s) ฐานข้อมูลเรียลไทม์ประมาณขนาดของคำขอเขียนแต่ละรายการและยกเลิกคำขอที่จะใช้เวลานานกว่าเวลาเป้าหมาย

หากคุณระบุ unlimited จะอนุญาตให้มีการเขียนขนาดใหญ่เป็นพิเศษ (ที่มีเพย์โหลดสูงสุด 256MB) ซึ่งอาจบล็อกคำขอที่ตามมาในขณะที่ฐานข้อมูลประมวลผลการดำเนินการปัจจุบัน ไม่สามารถยกเลิกการเขียนได้เมื่อถึงเซิร์ฟเวอร์

curl -X DELETE 'https://docs-examples.firebaseio.com/rest/delete-data.json?writeSizeLimit=medium'

คุณจะเห็นข้อความแสดงข้อผิดพลาดต่อไปนี้หากการเขียนมีขนาดใหญ่เกินไป:

Error: WRITE_TOO_BIG: Data to write exceeds the maximum size that can be modified with a single request.

นอกจากนี้ คุณยังสามารถตั้งค่า defaultWriteSizeLimit สำหรับอินสแตนซ์ฐานข้อมูลทั้งหมดได้โดยใช้ Firebase CLI ขีดจำกัดนี้ใช้กับคำขอทั้งหมด รวมถึงคำขอจาก SDK ฐานข้อมูลใหม่จะถูกสร้างขึ้นโดยตั้งค่า defaultWriteSizeLimit เป็น large . คุณไม่สามารถตั้ง defaultWriteSizeLimit ให้ tiny โดยใช้ Firebase CLI

firebase database:settings:set defaultWriteSizeLimit large

สั่งโดย

ดูส่วนในคำแนะนำเกี่ยวกับ ข้อมูลที่สั่งซื้อ สำหรับข้อมูลเพิ่มเติม

LimitToFirst, LimitToLast, startAt, endAt, เท่ากับ

ดูส่วนในคำแนะนำเกี่ยวกับ การกรองข้อมูล สำหรับข้อมูลเพิ่มเติม

การสตรีมจาก REST API

ตำแหน่งข้อมูล Firebase REST รองรับโปรโตคอล EventSource / Server-Sent Events หากต้องการสตรีมการเปลี่ยนแปลงไปยังตำแหน่งเดียวในฐานข้อมูลเรียลไทม์ คุณต้องทำบางสิ่ง:

  • ตั้งค่าส่วนหัว Accept ของลูกค้าเป็น "text/event-stream"
  • เคารพการเปลี่ยนเส้นทาง HTTP โดยเฉพาะรหัสสถานะ HTTP 307
  • หากสถานที่นั้นต้องการสิทธิ์ในการอ่าน คุณต้องรวมพารามิเตอร์ auth ด้วย

ในทางกลับกัน เซิร์ฟเวอร์จะส่งเหตุการณ์ที่มีชื่อเป็นสถานะของข้อมูลที่มีการเปลี่ยนแปลง URL ที่ร้องขอ โครงสร้างของข้อความเหล่านี้สอดคล้องกับโปรโตคอล EventSource

event: event name
data: JSON encoded data payload

เซิร์ฟเวอร์อาจส่งเหตุการณ์ต่อไปนี้:

ใส่

ข้อมูลที่เข้ารหัส JSON เป็นออบเจ็กต์ที่มี 2 คีย์: เส้นทาง และ data คีย์เส้นทาง ชี้ไปยังตำแหน่งที่เกี่ยวข้องกับ URL คำขอ ไคลเอนต์ควรแทนที่ข้อมูลทั้งหมด ณ ตำแหน่งนั้นในแคชด้วย data

ปะ

ข้อมูลที่เข้ารหัส JSON เป็นออบเจ็กต์ที่มี 2 คีย์: เส้นทาง และ data คีย์เส้นทาง ชี้ไปยังตำแหน่งที่เกี่ยวข้องกับ URL คำขอ สำหรับแต่ละคีย์ใน data ไคลเอ็นต์ควรแทนที่คีย์ที่เกี่ยวข้องในแคชด้วยข้อมูลสำหรับคีย์นั้นในข้อความ

ให้มีชีวิตอยู่

ข้อมูลสำหรับเหตุการณ์นี้เป็น null ไม่จำเป็นต้องดำเนินการใดๆ

ยกเลิก

ข้อผิดพลาดที่ไม่คาดคิดบางอย่างสามารถส่งเหตุการณ์ "ยกเลิก" และยุติการเชื่อมต่อได้ สาเหตุอธิบายไว้ในข้อมูลที่ให้ไว้สำหรับเหตุการณ์นี้ สาเหตุที่เป็นไปได้บางประการมีดังนี้: 1. กฎความปลอดภัยของฐานข้อมูลเรียลไทม์ Firebase ไม่อนุญาตให้อ่านในตำแหน่งที่ร้องขออีกต่อไป คำอธิบาย "ข้อมูล" สำหรับสาเหตุนี้คือ "สิทธิ์ถูกปฏิเสธ" 2. การเขียนทริกเกอร์สตรีมเมอร์เหตุการณ์ที่ส่งโครงสร้าง JSON ขนาดใหญ่ที่เกินขีดจำกัดของเรา 512MB `ข้อมูล` สำหรับสาเหตุนี้คือ "เพย์โหลดที่ระบุมีขนาดใหญ่เกินไป โปรดขอตำแหน่งที่มีข้อมูลน้อย"

auth_removed

ข้อมูลสำหรับเหตุการณ์นี้เป็นสตริงที่ระบุว่าข้อมูลรับรองหมดอายุแล้ว เหตุการณ์นี้จะถูกส่งเมื่อพารามิเตอร์ auth ถูกต้องที่ให้มาใช้ไม่ได้อีกต่อไป

นี่คือตัวอย่างชุดเหตุการณ์ที่เซิร์ฟเวอร์อาจส่ง:

// Set your entire cache to {"a": 1, "b": 2}
event: put
data: {"path": "/", "data": {"a": 1, "b": 2}}

// Put the new data in your cache under the key 'c', so that the complete cache now looks like:
// {"a": 1, "b": 2, "c": {"foo": true, "bar": false}}
event: put
data: {"path": "/c", "data": {"foo": true, "bar": false}}

// For each key in the data, update (or add) the corresponding key in your cache at path /c,
// for a final cache of: {"a": 1, "b": 2, "c": {"foo": 3, "bar": false, "baz": 4}}
event: patch
data: {"path": "/c", "data": {"foo": 3, "baz": 4}}

ลำดับความสำคัญ

ข้อมูลลำดับความสำคัญสำหรับสถานที่สามารถอ้างอิงได้ด้วย "รายการย่อยเสมือน" ชื่อ .priority คุณสามารถอ่านลำดับความสำคัญด้วยคำขอ GET และเขียนด้วยคำขอ PUT ตัวอย่างเช่น คำขอต่อไปนี้ดึงข้อมูลลำดับความสำคัญของ users/tom :

curl 'https://[PROJECT_ID].firebaseio/users/tom/.priority.json'

หากต้องการเขียนลำดับความสำคัญและข้อมูลพร้อมกัน คุณสามารถเพิ่ม .priority ชายน์ลงในเพย์โหลด JSON ได้:

curl -X PUT -d '{"name": {"first": "Tom"}, ".priority": 1.0}' \
  'https://[PROJECT_ID].firebaseio/users/tom.json'

หากต้องการเขียนลำดับความสำคัญและค่าดั้งเดิม (เช่น สตริง) ในเวลาเดียวกัน คุณสามารถเพิ่มรายการย่อย .priority และใส่ค่าดั้งเดิมลงในรายการ .value ได้:

curl -X PUT -d '{".value": "Tom", ".priority": 1.0}' \
  'https://[PROJECT_ID].firebaseio/users/tom/name/first.json'

สิ่งนี้เขียนว่า "Tom" โดยมีลำดับความสำคัญเป็น 1.0 สามารถรวมลำดับความสำคัญไว้ที่ระดับความลึกใดก็ได้ในเพย์โหลด JSON

ค่าเซิร์ฟเวอร์

คุณสามารถเขียนค่าเซิร์ฟเวอร์ ณ ตำแหน่งหนึ่งได้โดยใช้ค่าตัวยึดตำแหน่งซึ่งเป็นออบเจ็กต์ที่มีคีย์ .sv เพียงคีย์เดียว ค่าสำหรับคีย์นั้นคือประเภทของค่าเซิร์ฟเวอร์ที่คุณต้องการตั้งค่า ตัวอย่างเช่น คำขอต่อไปนี้จะตั้งค่าของโหนดเป็นการประทับเวลาปัจจุบันของเซิร์ฟเวอร์ Firebase:

curl -X PUT -d '{".sv": "timestamp"}' \
  'https://[PROJECT_ID].firebaseio/users/tom/startedAtTime.json'

คุณยังสามารถเขียนลำดับความสำคัญโดยใช้ค่าเซิร์ฟเวอร์ โดยใช้เส้นทาง "ลูกเสมือน" ที่ระบุไว้ข้างต้น

ค่าเซิร์ฟเวอร์ที่รองรับได้แก่:

ค่าเซิร์ฟเวอร์
การประทับเวลา เวลาตั้งแต่ยุค UNIX มีหน่วยเป็นมิลลิวินาที
เพิ่มขึ้น ระบุค่าเดลต้าจำนวนเต็มหรือทศนิยม ในรูปแบบ { ".sv": {"increment": <delta_value> }} ซึ่งใช้เพื่อเพิ่มค่าฐานข้อมูลปัจจุบันแบบอะตอมมิก หากยังไม่มีข้อมูล การอัพเดตจะตั้งค่าข้อมูลเป็นค่าเดลต้า หากค่าเดลต้าหรือข้อมูลที่มีอยู่เป็นตัวเลขทศนิยม ค่าทั้งสองจะถูกตีความว่าเป็นตัวเลขทศนิยมและนำไปใช้กับส่วนหลังเป็นค่าสองเท่า เลขคณิตคู่และการแสดงค่าสองเท่าเป็นไปตามซีแมนทิกส์ IEEE 754 หากมีการล้นของจำนวนเต็มบวก/ลบ ผลรวมจะคำนวณเป็นสองเท่า

การดึงและอัปเดตกฎความปลอดภัยของฐานข้อมูลเรียลไทม์ Firebase

REST API ยังสามารถใช้เพื่อดึงข้อมูลและอัปเดต กฎความปลอดภัยของฐานข้อมูลเรียลไทม์ Firebase สำหรับโปรเจ็กต์ Firebase ของคุณ คุณจะต้องมีความลับของโปรเจ็กต์ Firebase ซึ่งอยู่ใต้แผง บัญชีบริการ ของการตั้งค่าโปรเจ็กต์ Firebase

curl 'https://[PROJECT_ID].firebaseio/.settings/rules.json?auth=FIREBASE_SECRET'
curl -X PUT -d '{ "rules": { ".read": true } }' 'https://[PROJECT_ID].firebaseio/.settings/rules.json?auth=FIREBASE_SECRET'

ตรวจสอบคำขอ

ตามค่าเริ่มต้น คำขอ REST จะดำเนินการโดยไม่มีการรับรองความถูกต้อง และจะสำเร็จก็ต่อเมื่อ กฎฐานข้อมูลเรียลไทม์ อนุญาตให้เข้าถึงข้อมูลแบบอ่านหรือเขียนแบบสาธารณะ หากต้องการตรวจสอบคำขอของคุณ ให้ใช้พารามิเตอร์การค้นหา access_token= หรือ auth=

เรียนรู้เพิ่มเติมเกี่ยวกับการตรวจสอบสิทธิ์ผ่าน REST API ใน การตรวจสอบสิทธิ์คำขอ REST

เงื่อนไขข้อผิดพลาด

Firebase Database REST API สามารถส่งคืนรหัสข้อผิดพลาดต่อไปนี้ได้

รหัสสถานะ HTTP
400 คำขอไม่ถูกต้อง

เงื่อนไขข้อผิดพลาดอย่างใดอย่างหนึ่งต่อไปนี้:

  • ไม่สามารถแยกวิเคราะห์ข้อมูล PUT หรือ POST
  • ข้อมูล PUT หรือ POST หายไป
  • คำขอพยายาม PUT หรือ POST ข้อมูลที่มีขนาดใหญ่เกินไป
  • การเรียก REST API มีชื่อลูกที่ไม่ถูกต้องซึ่งเป็นส่วนหนึ่งของเส้นทาง
  • เส้นทางการเรียก REST API ยาวเกินไป
  • คำขอประกอบด้วยค่าเซิร์ฟเวอร์ที่ไม่รู้จัก
  • ดัชนีสำหรับการสืบค้นไม่ได้ถูกกำหนดไว้ใน กฎความปลอดภัยของฐานข้อมูล Firebase Realtime ของคุณ
  • คำขอไม่สนับสนุนพารามิเตอร์การสืบค้นตัวใดตัวหนึ่งที่ระบุไว้
  • คำขอผสมพารามิเตอร์การสืบค้นกับคำขอ GET แบบตื้น
401 ไม่ได้รับอนุญาต

เงื่อนไขข้อผิดพลาดอย่างใดอย่างหนึ่งต่อไปนี้:

  • โทเค็นการตรวจสอบสิทธิ์หมดอายุแล้ว
  • โทเค็นการตรวจสอบสิทธิ์ที่ใช้ในคำขอไม่ถูกต้อง
  • การตรวจสอบสิทธิ์ด้วย access_token ล้มเหลว
  • คำขอละเมิด กฎความปลอดภัยของฐานข้อมูล Firebase Realtime ของคุณ
404 ไม่พบ ไม่พบฐานข้อมูลเรียลไทม์ที่ระบุ
500 ข้อผิดพลาดภายในเซิร์ฟเวอร์ เซิร์ฟเวอร์ส่งคืนข้อผิดพลาด ดูข้อความแสดงข้อผิดพลาดสำหรับรายละเอียดเพิ่มเติม
503 บริการไม่พร้อมใช้งาน ฐานข้อมูลเรียลไทม์ Firebase ที่ระบุไม่พร้อมใช้งานชั่วคราว ซึ่งหมายความว่าไม่ได้พยายามร้องขอ
412 เงื่อนไขเบื้องต้นล้มเหลว ค่า ETag ที่ระบุของคำขอในส่วนหัว if-match ไม่ตรงกับค่าของเซิร์ฟเวอร์