Projektowałem aplikację internetową, a potem przestałem myśleć o tym, jak mój interfejs API powinien być zaprojektowany jako usługa internetowa RESTful. Na razie większość moich identyfikatorów URI ma charakter ogólny i może dotyczyć różnych aplikacji internetowych:
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
Mam wrażenie, że robię dużo źle po tym, jak poszperałem w SO i Google.
Zaczynając od /logout
, być może, ponieważ tak naprawdę GET
nic nie robię - bardziej odpowiednie może być POST
żądanie /logout
, zniszczenie sesji, a następnie GET
przekierowanie. I czy /logout
termin powinien pozostać?
A co z /login
i /register
. Mogę zmienić /register
się /registration
, ale to nie zmienia zasadniczo jak mój serwis działa - jeśli to ma głębsze problemy.
Teraz zauważam, że nigdy nie udostępniam /user
zasobu. Być może można to jakoś spożytkować. Na przykład weź użytkownika myUser
:
foo.com/user/myUser
lub
foo.com/user
Użytkownik końcowy nie wymaga dodatkowej szczegółowości w identyfikatorze URI. Jednak który z nich jest bardziej atrakcyjny wizualnie?
Zauważyłem tutaj kilka innych pytań dotyczących SO na temat tego biznesu REST, ale naprawdę byłbym wdzięczny za wskazówki dotyczące tego, co tutaj przedstawiłem, jeśli to możliwe.
Dzięki!
AKTUALIZACJA:
Chciałbym również uzyskać opinie na temat:
/user/1
vs
/user/myUserName