Saya tahu ini adalah posting lama... hanya ingin menyebutkan cara pasti bagi nodejs untuk berkomunikasi dengan Oracle tanpa modul tambahan.
Siapkan Oracle sehingga dapat membuat dan menerima permintaan http. Ada beberapa cara untuk melakukannya:
Cara termudah adalah dengan mengaktifkan gateway epg:
Anda juga dapat mengatur modplsq:
atau pendengar Apex:
Kemudian di node js lakukan standar http.get:
http.get("http://localhost/accessor/myschema.my_procedure?x=1&y=2", function(res) {
console.log("Got response: " + res.statusCode);
}).on('error', function(e) {
console.log("Got error: " + e.message);
});
Pendekatan mana pun ... amankan oracle sehingga hanya akan merespons alamat ip server nodejs. Jadi jika berjalan di localhost:
if owa_util.get_cgi_env('REMOTE_ADDR') = '127.0.0.1' then
--ok
else
-- fail
end if;
Juga memblokir panggilan ke setiap paket dan prosedur lainnya. Ada beberapa cara untuk melakukan ini tergantung pada jalur yang Anda ambil.
Pastikan Anda melakukan ini minimal:
- membuat daftar putih item yang dapat dipanggil dari web
- mewajibkan semua url berisi nama skema seperti:myuser.myprocedure
- pastikan bagian pertama url (hingga jalur kueri) hanya berisi a-z 0-9
- benar-benar daftar putih yang baik akan menangani sebagian besar item ini
Itu dia...tidak perlu khawatir jika modul akan rusak atau berhenti bekerja dengan rilis berikutnya.
DAN...Anda dapat dengan mudah berkomunikasi dari Oracle ke Node menggunakan:
- apex_web_service.make_rest_request
- utl_http