web-dev-qa-db-fra.com

Passer un tableau dans GET pour un appel REST

J'ai une url pour récupérer les rendez-vous d'un utilisateur comme celui-ci:

/user/:userId/appointments

À quoi devrait ressembler l'URL si je souhaite obtenir des rendez-vous pour plusieurs utilisateurs?

devrait-ce être:

/appointments?users=1d1,1d2..

Merci Chris.

46
ChrisOdney

Les collections sont une ressource si/rendez-vous est bien comme ressource.

Les collections offrent aussi généralement des filtres via la chaîne de requête, qui est essentiellement ce que utilisateurs = id1, id2 ... est.

Alors,

/appointments?users=id1,id2 

va bien en tant que ressource RESTful filtrée.

60
bryanmac

Je pense qu'il est préférable de sérialiser vos paramètres d'appel REST), généralement par codage JSON:

/appointments?users=[id1,id2]

ou même:

/appointments?params={users:[id1,id2]}

Ensuite, vous les décodez sur le serveur. Cela va vous donner plus de flexibilité à long terme.

Assurez-vous juste de bien utiliser URLEncode les paramètres avant de les envoyer!

8
sgress454

Une autre façon de le faire, qui peut avoir du sens en fonction de l’architecture/de la structure de serveur de votre choix, consiste à répéter sans cesse le même argument. Quelque chose comme ça:

/appointments?users=id1&users=id2

Dans ce cas, je vous recommande d'utiliser le nom du paramètre au singulier:

/appointments?user=id1&user=id2

Ceci est supporté nativement par des frameworks tels que Jersey (pour Java). Jetez un oeil sur cette question pour plus de détails.

7

Cela a fonctionné pour moi.

/users?ids[]=id1&ids[]=id2
1
Ravi MCA
/appointments?users=1d1,1d2.. 

c'est bien. C'est quasiment votre seule option raisonnable puisque vous ne pouvez pas passer dans un corps avec un GET.

1
Oleksi