APIResource
API resource umum yang melakukan request berdasarkan URL, cocok untuk semua HTTP API. Mewarisi base class FlowResource, dan meng-extend konfigurasi request dan refresh(). Berbeda dengan MultiRecordResource, SingleRecordResource, APIResource tidak bergantung pada nama resource, langsung melakukan request berdasarkan URL, cocok untuk skenario seperti API kustom, API pihak ketiga.
Cara Pembuatan: ctx.makeResource('APIResource') atau ctx.initResource('APIResource'). Sebelum digunakan perlu menyetel setURL(); dalam konteks RunJS akan otomatis menyuntikkan ctx.api (APIClient), tidak perlu setAPIClient manual.
Skenario Penggunaan
Kemampuan Base Class (FlowResource)
Semua Resource memiliki:
Konfigurasi Request
Format URL
- Gaya resource: mendukung bentuk singkat resource NocoBase, seperti
users:list,posts:get, akan digabungkan dengan baseURL - Path relatif: seperti
/api/custom/endpoint, digabungkan dengan baseURL aplikasi - URL lengkap: gunakan alamat lengkap saat cross-domain, target perlu mengkonfigurasi CORS
Pengambilan Data
Contoh
GET Request Dasar
URL Gaya Resource
POST Request (dengan Request Body)
Memantau Event refresh
Error Handling
Custom Request Header
Hal yang Perlu Diperhatikan
- Ketergantungan ctx.api: di RunJS
ctx.apidisuntikkan oleh runtime environment, biasanya tidak perlusetAPIClientmanual; jika digunakan pada skenario tanpa konteks, perlu menyetelnya sendiri. - refresh adalah request:
refresh()akan melakukan satu request berdasarkan konfigurasi saat ini, method, params, data, dll. perlu dikonfigurasi sebelum dipanggil. - Error tidak update data: saat request gagal
getData()mempertahankan nilai asli, dapat melaluigetError()mendapatkan informasi error. - Dengan ctx.request: request sekali pakai sederhana dapat menggunakan
ctx.request(); saat memerlukan data reaktif, event, manajemen status error gunakan APIResource.
Terkait
- ctx.resource - Instance resource dalam konteks saat ini
- ctx.initResource() - Inisialisasi dan mengikat ke ctx.resource
- ctx.makeResource() - Membuat instance resource baru, tidak mengikat
- ctx.request() - HTTP request umum, cocok untuk panggilan sekali pakai sederhana
- MultiRecordResource - Berorientasi data table/list, mendukung CRUD, pagination
- SingleRecordResource - Berorientasi single record

