Eu estava projetando um aplicativo da web e parei para pensar em como minha API deveria ser projetada como um serviço da web RESTful. Por enquanto, a maioria dos meus URIs são genéricos e podem se aplicar a vários aplicativos da web:
GET /logout // destroys session and redirects to /
GET /login // gets the webpage that has the login form
POST /login // authenticates credentials against database and either redirects home with a new session or redirects back to /login
GET /register // gets the webpage that has the registration form
POST /register // records the entered information into database as a new /user/xxx
GET /user/xxx // gets and renders current user data in a profile view
POST /user/xxx // updates new information about user
Tenho a sensação de que estou fazendo muitas coisas erradas aqui, depois de fuçar no SO e no Google.
Começando com /logout
, talvez já que eu realmente não faça GET
nada - pode ser mais apropriado POST
uma solicitação para /logout
destruir a sessão e, em seguida, GET
redirecionar. E o /logout
prazo deve permanecer?
Que tal /login
e /register
. Eu poderia mudar /register
para, /registration
mas isso não altera a forma como meu serviço funciona fundamentalmente - se ele tiver problemas mais profundos.
Percebo agora que nunca exponho um /user
recurso. Talvez isso pudesse ser utilizado de alguma forma. Por exemplo, considere o usuário myUser
:
foo.com/user/myUser
ou
foo.com/user
O usuário final não requer esse detalhamento extra no URI. No entanto, qual é mais atraente visualmente?
Percebi algumas outras perguntas aqui no SO sobre esse negócio REST, mas eu realmente gostaria de receber algumas orientações sobre o que expus aqui, se possível.
Obrigado!
ATUALIZAR:
Eu também gostaria de algumas opiniões sobre:
/user/1
vs
/user/myUserName