2009-05-23 7 views
0

J'écris actuellement un service REST en utilisant CakePHP et je me demandais comment envoyer un tableau de items_ids via REST à une action. Je suppose que ma vraie question est, comment la demande ressemblera-t-elle à?Envoyer des tableaux aux services REST dans CakePHP

http://mysite/items/create/ ???

Je suppose que je peux passer les valeurs comme 1 argument en utilisant implode(someSeperator, array) mais y at-il une meilleure solution?

Merci à l'avance

Répondre

0

Cela vaut en fait à une page web, non seulement CakePHP. Toute page Web qui souhaite envoyer un grand nombre de champs doit les inclure tous dans sa requête POST.

Si vous aviez un formulaire de page Web avec 50 entrées et un envoi en bas, la page sérialiserait par défaut les données et les enverrait dans la demande de formulaire.

Si vous ne voulez pas que toutes les données soient envoyées dans des barres séparées, l'utilisation d'un seperator fonctionnerait bien et signifierait que toutes les données sont entrées dans un paramètre.

Somthing comme:

http://mysite/items/create?mydata=23-45-65-32-43-54-23-23-656-77 
0

une autre option:

$safedata = base64_encode(serialize($arrayofdata)); 

et le transmettre à l'URL en tant que chaîne de sécurité.

décompressez puis:

$data = unserialize(base64_decode($safedata); 
1

Si vous voulez vraiment être RESTful à ce sujet, vous voudriez certainement utiliser une requête POST pour créer des enregistrements. C'est si vous voulez être strict sur la norme, mais cela vous aiderait aussi parce que je lis que la longueur de votre tableau peut varier énormément - parfois 1 ID, peut-être 30 autres fois, etc.) ont une limite de caractères maximale que vous pourriez éventuellement rencontrer. Si vous lancez avec une requête POST, vous pouvez facilement passer dans une liste délimitée par des virgules (pensez à la façon dont un nom de champ avec plusieurs cases à cocher est passé) ou, mon mécanisme favori, un tableau codé JSON (représenté sous forme de chaîne qui peut facilement être JSON-décodé de l'autre côté.

2

ce ne reste. REST est sur l'utilisation de HTTP, et non XML!

une requête HTTP typique pour créer un élément serait comme celui-ci

PUT http://mysite/items/ HTTP/1.1 
Host: xxxxx 

<myitem> 
<text> asdasdas </text> 
</myitem> 

Et vous pouvez utiliser ce que vous voulez dans le corps de la requête. XML, JSON, PHP SERIALIZE ou votre propre format de données.

Questions connexes