2013-08-18 15 views
6

Ostatnio bardzo się starałam myśleć tak RESTfully, jak to tylko możliwe, a mnie to utrudniają nieoczywiste trasy.Restrukturyzacja sposobu sprawdzania dostępności nazw użytkowników, wiadomości e-mail itd.

W tym konkretnym przypadku, jestem ciekawy RESTful sposób, aby sprawdzić nazwę użytkownika i dostępność e-mail dla użytkownika, lub cokolwiek innego, który ma wyjątkowość.

Mój gut mówi mi, że chciałbym, aby wykonać GET na /users/email lub /users/username/ każdej z wymaganych param, albo coś wzdłuż linii GET /users/search/ z opcjonalnymi params z email i username. Jeśli otrzymasz numer 200, wówczas username lub email jest niedostępny; jeśli otrzymasz numer 404, jest on dostępny.

Wolę pierwszą opcję, ponieważ jest bardziej jednoznaczna, ale nie jest tak, jakbym przeczytał tezę Roya Fieldinga, żeby wiedzieć wystarczająco dobrze, co robić.

Jaka jest tutaj najlepsza metoda?

Odpowiedz

4

Pierwsze podejście wydaje się być bardziej "UTRZYMUJĄCE SIĘ". Próbujesz pobrać określony zasób (przez nazwę użytkownika lub adres e-mail) i uzyskać go, jeśli istnieje, lub uzyskać komunikat stanu "niedostępny zasób". Byłby:

  • GET/Użytkownicy/nazwa_użytkownika/John Wayne ("get" John Wayne dostępności zasobów/nazwa_użytkownika ...)

ten powinien generować:

  • 200: jeśli źródło istnieje
  • 404: jeżeli nie istnieje zasób

drugi o, ne wydaje się być bardziej podobną do "podobnej do SOAP" usługą internetową, w której definiujesz "funkcję" (/ users/search /) z niektórymi "parametrami" (nazwa użytkownika, adres e-mail) ...

+0

Zmieniłem je, ponieważ jeśli zasób istnieje, jest niedostępny. Jeśli nie istnieje, jest dostępny. –

+1

Przepraszam (zmieni moją odpowiedź) ... Nie "przeczytałem" w ten sposób, masz na myśli, że zwraca "200", jeśli nazwa użytkownika jest dostępna ... Rozumiem, ale jest to trochę mylące w zależności od semantyki zasób GET. Może powinieneś rozważyć obsłużenie tego w kliencie, tj. W kliencie, którego sprawdzisz, jeśli zasób jest niedostępny, możesz go utworzyć (nazwa użytkownika jest dostępna) ... Ale to jest moja interpretacja, myślę, że jest całkiem sporo pokój do interpretacji :) – emgsilva

1

Dla unikalnych pól, pierwsza opcja to dobre dopasowanie (/ users/email lub/users/username /), dla nieunikalnego wyszukiwania pól byłoby bardziej odpowiednie.

0

Polecam, używaj HEAD request zamiast GET.

Korzystanie z GET może stanowić problem bezpieczeństwa. Haker może użyć kombinacji zidentyfikować poprawną nazwę użytkownika GET albo by spowodować 200 lub 404.

0

Należy starać się uzyskać listę użytkowników z poczty przez

GET /[email protected] 

A tutaj można znaleźć 1 pozycja lub 0 przedmiotów. W pierwszym przypadku adres nie jest unikalny. W innym - jest unikalny

Powiązane problemy