Estaba diseñando una aplicación web y luego me detuve a pensar en cómo debería diseñarse mi api como un servicio web RESTful. Por ahora, la mayoría de mis URI son genéricos y pueden aplicarse a varias aplicaciones 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
Tengo la sensación de que estoy haciendo mucho mal aquí después de hurgar en SO y Google.
Comenzando con /logout, quizás ya que realmente no tengo GETnada, puede ser más apropiado para POSTuna solicitud /logout, destruir la sesión y luego GETla redirección. ¿Y debería /logoutquedarse el plazo?
¿Qué pasa con /loginy /register. Podría cambiar /registera, /registrationpero eso no altera el funcionamiento fundamental de mi servicio, si tiene problemas más profundos.
Ahora me doy cuenta de que nunca expongo un /userrecurso. Quizás eso podría utilizarse de alguna manera. Por ejemplo, tomemos al usuario myUser:
foo.com/user/myUser
o
foo.com/user
El usuario final no requiere esa verbosidad adicional en el URI. Sin embargo, ¿cuál es más atractivo visualmente?
Noté algunas otras preguntas aquí en SO sobre este negocio REST, pero realmente agradecería alguna orientación sobre lo que he presentado aquí si es posible.
¡Gracias!
ACTUALIZAR:
También me gustaría algunas opiniones sobre:
/user/1
vs
/user/myUserName