web-dev-qa-db-fra.com

Comment puis-je encoder quelque chose dans Node.js?

Je veux l'URL encoder ceci:

SELECT name FROM user WHERE uid = me() 

Dois-je télécharger un module pour cela? J'ai déjà le module de demande.

276
TIMEX

Le module intégré querystring est ce que vous recherchez:

var querystring = require("querystring");
var result = querystring.stringify({query: "SELECT name FROM user WHERE uid = me()"});
console.log(result);
#prints 'query=SELECT%20name%20FROM%20user%20WHERE%20uid%20%3D%20me()'
120
nicolaskruchten

Utilisez la fonction escape de querystring. Il génère une chaîne sécurisée pour les URL.

var escaped_str = require('querystring').escape('Photo on 30-11-12 at 8.09 AM #2.jpg');
console.log(escaped_str);
// prints 'Photo%20on%2030-11-12%20at%208.09%20AM%20%232.jpg'
44
Kamrul

Notez que le codage URI est bon pour la partie requête, pas pour le domaine. Le domaine est encodé à l'aide de punycode. Vous avez besoin d’une bibliothèque du type RI.js pour effectuer la conversion entre un URI et un IRI (Internationalized Resource Identifier).

Ceci est correct si vous envisagez d'utiliser la chaîne ultérieurement en tant que chaîne de requête:

> encodeURIComponent("http://examplé.org/rosé?rosé=rosé")
'http%3A%2F%2Fexampl%C3%A9.org%2Fros%C3%A9%3Fros%C3%A9%3Dros%C3%A9'

Si vous ne voulez pas que ASCII caractères tels que /, : et ? soient échappés, utilisez encodeURI :

> encodeURI("http://examplé.org/rosé?rosé=rosé")
'http://exampl%C3%A9.org/ros%C3%A9?ros%C3%A9=ros%C3%A9'

Cependant, pour d'autres cas d'utilisation, vous aurez peut-être besoin de ri-js :

> var URI = require("uri-js");
undefined
> URI.serialize(URI.parse("http://examplé.org/rosé?rosé=rosé"))
'http://xn--exampl-gva.org/ros%C3%A9?ros%C3%A9=ros%C3%A9'
14
Flimm

encodeURIComponent (string) le fera:

encodeURIComponent("Robert'); DROP TABLE Students;--")
//>> "Robert')%3B%20DROP%20TABLE%20Students%3B--"

Passer du SQL dans une chaîne de requête peut ne pas être un bon plan,

voir celui-ci

11
John Culviner