Search code examples
restapihttprestful-architecture

REST Endpoints for Current User vs ID


As far as REST APIs go, which is the better structure to follow in general?

Assume GET/PUT/POST/DELETE for all resources.

1) Use currently signed in user for /users/**/* routes.

/users
/users/password
/users/email
/users/preferences
/users/documents
/documents/:id

2) Having absolute paths with IDs and using /users/:id for currently signed in user?

/users
/users/:id/password
/users/:id/email
/users/:id/preferences
/preferences/:id

Does it matter?


Solution

  • Both are fine. What's nice about creating unique endpoints for every user, is that one day you can allow user X to access information about user Y.

    The pattern I followed in a recent API was to create a unique endpoint for every user, but 1 endpoint /current-user that redirects to the /user/:some-id.

    A url might indicate an identity. It makes a lot of sense that other resources might refer to user as a 'creator' or 'modifier' of sommething, and in those places you might want to use a url (and not just a userId).