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.