Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Conecte o oráculo do nodejs


Eu sei que este é um post antigo... só queria mencionar uma maneira segura de os nodejs se comunicarem com o oracle sem módulos extras.

Configure o oracle para que ele possa criar e receber solicitações http. Há algumas maneiras de fazer isto:

O mais fácil é ativar o gateway epg:

Além disso, você pode configurar o modplsq:

ou o ouvinte do Apex:

Em seguida, no nó js, faça um http.get padrão:
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);

});

Qualquer que seja a abordagem... proteja o oráculo para que ele responda apenas ao endereço IP do servidor nodejs. Então, se estiver executando no localhost:
if owa_util.get_cgi_env('REMOTE_ADDR') = '127.0.0.1' then 
   --ok
else
   -- fail
end if;

Também bloqueia chamadas para todos os outros pacotes e procedimentos. Existem algumas maneiras de fazer isso, dependendo do caminho que você toma.

Certifique-se de fazer isso no mínimo:
  • criar uma lista branca de itens que podem ser chamados da web
  • exigir que todos os URLs contenham o nome do esquema, como:myuser.myprocedure
  • certifique-se de que a primeira parte do URL (até o caminho da consulta) contém apenas a-z 0-9
  • uma boa lista branca cuidará da maioria desses itens

Aí está... não precisa se preocupar se um módulo vai quebrar ou parar de funcionar com a próxima versão.

E... você pode se comunicar facilmente do Oracle para o uso do Node:
  • apex_web_service.make_rest_request
  • utl_http