Kirim satu permintaan HTTP yang berisi beberapa panggilan Meta Graph API. Operasi independen Anda diproses secara paralel sementara operasi dependen Anda diproses secara berurutan. Setelah operasi selesai, tanggapan terkonsolidasi akan diteruskan kembali kepada Anda dan koneksi HTTP akan ditutup.
Urutan tanggapan sesuai dengan urutan operasi dalam permintaan. Anda harus memproses tanggapan yang sesuai untuk menentukan operasi mana yang berhasil dan mana yang harus dicoba lagi dalam operasi berikutnya.
Permintaan batch mengambil objek JSON yang terdiri dari array permintaan Anda. Permintaan batch mengembalikan array tanggapan HTTP logika yang diwakili sebagai array JSON. Setiap tanggapan memiliki kode status, array header opsional, dan isi opsional (yaitu string berenkode JSON).
Untuk membuat permintaan batch, kirim permintaan POST
ke endpoint yang parameter batch
adalah objek JSON Anda.
POST /ENDPOINT?batch=[JSON-OBJECT]
Contoh Permintaan Batch
Pada contoh ini, kami mendapatkan informasi tentang dua Halaman yang dikelola aplikasi kami.
Diformat agar mudah dibaca.curl -i -X POST 'https://graph.facebook.com/me?batch= [ { "method":"GET", "relative_url":"PAGE-A-ID" }, { "method":"GET", "relative_url":"PAGE-B-ID" } ] &include_headers=false // Included to remove header information &access_token=ACCESS-TOKEN'
Setelah semua operasi selesai, tanggapan dikirim dengan hasil dari setiap operasi. Karena header yang dikembalikan terkadang dapat jauh lebih besar daripada tanggapan API sebenarnya, Anda mungkin ingin menghapusnya demi efisiensi. Untuk memasukkan informasi header, hapus parameter include_headers
atau atur ke true
.
Contoh Tanggapan
Kolom isi berisi objek JSON berenkode string:
[ { "code": 200, "body": "{ \"name\": \"Page A Name\", \"id\": \"PAGE-A-ID\" }" }, { "code": 200, "body": "{ \"name\": \"Page B Name\", \"id\": \"PAGE-B-ID\" }" } ]
Ada kemungkinan menggabungkan operasi yang biasanya menggunakan metode HTTP yang berbeda ke dalam satu permintaan batch. Sementara operasi GET
dan DELETE
hanya dapat memiliki kolom relative_url
dan method
, POST
dan operasi PUT
dapat berisi kolom body
. Isi ini harus diformat sebagai string HTTP POST mentah, sama seperti string kueri URL.
Contoh Permintaan
Contoh berikut menulis postingan baru ke Halaman yang kami kelola dan memiliki izin terbit, lalu ke beranda Halaman di satu operasi:
curl "https://graph.facebook.com/PAGE-ID?batch= [ { "method":"POST", "relative_url":"PAGE-ID/feed", "body":"message=Test status update" }, { "method":"GET", "relative_url":"PAGE-ID/feed" } ] &access_token=ACCESS-TOKEN"
Output panggilan ini akan menjadi:
[ { "code": 200, "headers": [ { "name":"Content-Type", "value":"text/javascript; charset=UTF-8"} ], "body":"{\"id\":\"…\"}" }, { "code": 200, "headers": [ { "name":"Content-Type", "value":"text/javascript; charset=UTF-8" }, { "name":"ETag", "value": "…" } ], "body": "{\"data\": [{…}]} } ]
Contoh berikut membuat iklan baru untuk kampanye, lalu mendapatkan detail objek yang baru saja dibuat. Perhatikan URLEncoding untuk parameter isi:
curl \ -F 'access_token=...' \ -F 'batch=[ { "method":"POST", "name":"create-ad", "relative_url":"11077200629332/ads", "body":"ads=%5B%7B%22name%22%3A%22test_ad%22%2C%22billing_entity_id%22%3A111200774273%7D%5D" }, { "method":"GET", "relative_url":"?ids={result=create-ad:$.data.*.id}" } ]' \ https://graph.facebook.com
Contoh berikut menambahkan beberapa halaman ke Pengelola Bisnis:
curl \ -F 'access_token=<ACCESS_TOKEN>' \ -F 'batch=[ { "method":"POST", "name":"test1", "relative_url":"<BUSINESS_ID>/owned_pages", "body":"page_id=<PAGE_ID_1>" }, { "method":"POST", "name":"test2", "relative_url":"<BUSINESS_ID>/owned_pages", "body":"page_id=<PAGE_ID_2>" }, { "method":"POST", "name":"test3", "relative_url":"<BUSINESS_ID>/owned_pages", "body":"page_id=<PAGE_ID_3>" }, ]' \ "https://graph.facebook.com/v12.0"
Di mana:
<ACCESS_TOKEN>
adalah token akses dengan izin business_management
.<BUSINESS_ID>
adalah ID Pengelola Bisnis yang halamannya harus diklaim.<PAGE_ID_n>
adalah ID Halaman yang akan diklaim.Ada kemungkinan salah satu operasi yang Anda minta dapat mengakibatkan kesalahan. Ini dapat terjadi karena, misalnya Anda tidak memiliki izin melakukan operasi yang diminta. Tanggapannya mirip dengan Graph API standar, tetapi dikemas dalam sintaksis tanggapan batch:
[ { "code": 403, "headers": [ {"name":"WWW-Authenticate", "value":"OAuth…"}, {"name":"Content-Type", "value":"text/javascript; charset=UTF-8"} ], "body": "{\"error\":{\"type\":\"OAuthException\", … }}" } ]
Permintaan lain dalam batch akan tetap berhasil diselesaikan dan akan dikembalikan, seperti normalnya, dengan kode status 200
.
Waktu untuk batch besar atau kompleks dapat habis jika terlalu lama dalam menyelesaikan semua permintaan dalam batch. Dalam kondisi tersebut, hasilnya adalah batch yang selesai sebagian. Dalam batch yang selesai sebagian, permintaan yang berhasil diselesaikan akan mengembalikan output normal dengan kode status 200
. Tanggapan untuk permintaan yang tidak berhasil adalah null
. Anda dapat mencoba lagi permintaan yang gagal.
API Batch mendukung JSONP, sama seperti Graph API lainnya - fungsi panggilan balik JSONP ditentukan menggunakan string kueri callback
atau parameter postingan formulir.
Permintaan individu dari satu permintaan batch dapat menentukan token aksesnya sendiri sebagai string kueri atau parameter postingan formulir. Dalam kasus tersebut, token akses level atas dianggap token fallback dan digunakan jika permintaan individual tidak menetapkan token akses secara tegas.
Hal ini dapat bermanfaat apabila Anda ingin meminta API menggunakan token akses pengguna yang berbeda, atau jika panggilan Anda akan dilakukan menggunakan token akses aplikasi.
Anda harus menyertakan token akses sebagai parameter level atas, meskipun semua permintaan individual berisi token mereka sendiri.
Anda dapat mengunggah beberapa item biner sebagai bagian dari panggilan batch. Untuk melakukannya, Anda harus menambahkan semua barang biner sebagai lampiran banyak bagian/mime ke permintaan, dan memerlukan tiap operasi untuk mereferensikan item binernya menggunakan properti attached_files
dalam operasi. Properti attached_files
dapat mengambil daftar nama lampiran yang dipisahkan koma dalam nilainya.
Contoh berikut memperlihatkan cara mengunggah 2 foto dalam satu panggilan batch:
curl -F 'access_token=…' \ -F 'batch=[{"method":"POST","relative_url":"me/photos","body":"message=My cat photo","attached_files":"file1"},{"method":"POST","relative_url":"me/photos","body":"message=My dog photo","attached_files":"file2"},]' \ -F 'file1=@cat.gif' \ -F 'file2=@dog.jpg' \ https://graph.facebook.com