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 GET
nada, puede ser más apropiado para POST
una solicitud /logout
, destruir la sesión y luego GET
la redirección. ¿Y debería /logout
quedarse el plazo?
¿Qué pasa con /login
y /register
. Podría cambiar /register
a, /registration
pero eso no altera el funcionamiento fundamental de mi servicio, si tiene problemas más profundos.
Ahora me doy cuenta de que nunca expongo un /user
recurso. 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