Comment envoyer NULL dans la chaîne de requête HTTP?

Je suis le développement d'une API qui peut accepter les trois principaux types de données en tant que valeurs de paramètres de chaîne de requête: boolean, string & numeric (integer ou float). Par défaut, tout est récupéré une chaîne de caractères (je ne pense pas qu'il y a un moyen de contourner cela), mais les paramètres sont configurés avec un type afin que je les convertir en un type approprié.

J'ai maintenant besoin de commencer à accepter la valeur NULL pour les trois types de données, mais je ne suis pas sûr de ce qui est la meilleure façon de le faire.

Certaines personnes semblent n'accepter aucune valeur NULLE (?param, sans =), mais ce n'est pas assez de travail pour moi:

  1. Je suis déjà accepter qu'en tant que true pour les booléens, bien que cela puisse être changé.
  2. Il est reçu comme une chaîne vide, ce qui est une valeur valide pour le string type de données.

Donc, ici, sont les deux seules options que je peux voir, aucun de qui travaillent pour moi:

  1. Utiliser une constante, comme "NULL" ou "~". Qui fonctionne pour les booléens & des chiffres, mais pas pour les chaînes, qui peut être souhaité de la chaîne de valeur.
  2. Utiliser une valeur vide. Une fois de plus, qui peuvent travailler pour les booléens & des chiffres, mais pas pour les chaînes, qui peut être souhaité de la chaîne de valeur.

Semble à l'aide d'une constante peut être mon seul choix, et pour éviter les problèmes que les constantes peuvent être interdits à partir de chaînes. Mais est-ce vraiment la seule option viable? Je souhaite qu'il y ait une meilleure façon. 🙁

Modifier: j'ai juste eu une autre idée qui pourrait fonctionner, mais je ne suis pas sûr de savoir comment il sera perçu. Je pense qu'il a certainement des sauts de normes, et beaucoup de gens seraient probablement pas comme elle, mais de corriger mon problème mieux que toute autre solution jusqu'à présent. En gros, l'idée serait d'utiliser JSON, qui prend en charge les types de données. Je ne suis pas avoir ce problème avec les requêtes POST parce qu'ils sont à l'aide de JSON.

Donc, l'idée serait de prendre JSON dans la chaîne de requête, permettant aux une alternative de chaîne de requête qui remplacerait le standard HTTP. Quelque chose comme: ?_json={"foo":"bar","param":null} au lieu de ?foo=bar&param=~. Ou peut-être même prendre plus de la chaîne de requête entièrement: ?{"foo":"bar","param":null}.

Ne pouvez-vous pas juste envoyer un URLEncoded NUL de la valeur? (%00)? Puisque c'est un paramètre de requête, c'est dans l'URL et doit être décodé.
Kylar la suggestion semble être la méthode acceptée. Voir ici pour référence: w3schools.com/tags/ref_urlencode.asp
Wow, merci, je n'ai jamais pensé que & n'était pas au courant que c'était la méthode acceptée. L'esprit de poster une réponse? Je vais l'accepter comme la bonne solution.

OriginalL'auteur Marco Roy | 2015-07-06