passerende array in Get voor een rusttje

Ik heb een URL om afspraken voor een gebruiker op te halen:

/user/:userId/appointments

Hoe moet de URL eruit zien als ik afspraken voor meerdere gebruikers wil krijgen?

Moet het zijn:

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

Bedankt,
Chris.


Antwoord 1, Autoriteit 100%

Collecties zijn een resource SO / afspraken zijn prima als de bron.

Collecties bieden ook typisch filters via de querystring die in wezen is wat gebruikers = ID1, ID2 … is.

dus,

/appointments?users=id1,id2 

is prima als een gefilterde rustgevende hulpbron.


Antwoord 2, Autoriteit 18%

Ik denk dat het een betere praktijk is om uw rustoproepparameters te serialiseren, meestal door JSON-CODEING ze:

/appointments?users=[id1,id2]

of zelfs:

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

Dan kunt u deze op de server coderen. Dit gaat je op de lange termijn meer flexibiliteit geven.

Zorg ervoor dat u de params ook wordt ingeschakeld voordat u ze verzendt!


Antwoord 3, Autoriteit 15%

Een andere manier om dat te doen, wat zinvol kan zijn, afhankelijk van uw serverarchitectuur / keuze van keuze, is om hetzelfde argument steeds opnieuw te herhalen. Zoiets als volgt:

/appointments?users=id1&users=id2

In dit geval beveel ik aan de parameternaam in Singular te gebruiken:

/appointments?user=id1&user=id2

Dit wordt native ondersteund door frameworks zoals Jersey (voor Java). Kijk eens op deze vraag voor meer Details.


Antwoord 4

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

is prima. Het is vrijwel je enige verstandige optie omdat je geen lichaam kunt passeren met een GET.


Antwoord 5

Dit werkte voor mij.

/users?ids[]=id1&ids[]=id2

Antwoord 6

Gebruik HTTP POST in plaats van HTTP HTTP te gebruiken. En JSON. Of XML

Hier zou uw aanvraagstream naar de server eruit zien.

POST /appointments HTTP/1.0
Content-Type: application/json
Content-Length: (calculated by your utility)
{users: [user:{id:id1}, user:{id:id2}]}

of in XML,

POST /appointments HTTP/1.0
Content-Type: application/json
Content-Length: (calculated by your utility)
<users><user id='id1'/><user id='id2'/></users>

U kunt zeker blijven gebruiken zoals u hebt voorgesteld, omdat het zeker eenvoudiger is.

/appointments?users=1d1,1d2

Wat betekent dat u uw gegevensstructuren heel eenvoudig zou moeten houden.

Als / wanneer / wanneer uw gegevensstructuur complexer wordt, HTTP Get en zonder JSON, wordt uw programmering en het vermogen om de gegevens te herkennen erg moeilijk.

Daarom, tenzij u uw gegevensstructuur eenvoudig zou kunnen houden, dringt ik aan bij u een gegevensoverdrachtskader aan te nemen. Als uw verzoeken de browser gebaseerd zijn, is de gebruikelijke praktijk van de industrie JSON. Als uw aanvragen server-server zijn, dan is XML het handigste framework.

jQuery

Als uw client een browser is en u niet GWT gebruikt, moet u overwegen om jQuery Rest te gebruiken. Google op rustgevende diensten met jQuery.

Other episodes