2013-08-18 7 views
6

Ich habe vor kurzem sehr in Versuch versucht, so rücksichtsvoll wie möglich zu denken, und ich bin mich von den nicht-offensichtlichen Routen behindert.RESTful Weg, um die Verfügbarkeit von Benutzernamen, E-Mails usw. zu überprüfen

In diesem speziellen Fall bin ich neugierig auf die RESTful Weise zu prüfen, für den Benutzernamen und die E-Mail-Verfügbarkeit für einen Benutzer oder irgendetwas anderes, das Eindeutigkeit hat.

Mein Bauch sagt mir, dass ich ein GET auf /users/email oder /users/username/ jedem mit einem erforderlichen param oder etwas entlang der Linien von GET /users/search/ mit optionaler params von email und username ausführen wollen würde. Wenn Sie eine 200 erhalten, ist die username oder email nicht verfügbar; Wenn Sie eine 404 bekommen, dann ist es verfügbar.

Ich bevorzuge die erste Option, da es expliziter ist, aber es ist nicht so, als ob ich über Roy Fieldings These nachgedacht hätte, um genau zu wissen, was zu tun ist.

Was ist der beste Ansatz hier?

Antwort

4

Der erste Ansatz scheint eher "RESTful" zu sein. Sie versuchen, eine bestimmte Ressource (nach Benutzername oder E-Mail) abzurufen und sie abzurufen, wenn sie vorhanden ist, oder eine Statusmeldung als "nicht verfügbare Ressource" abzurufen. Dies wäre:

  • GET/users/Benutzername/johnwayne (zu johnwayne Ressource/username Verfügbarkeit "get" ...)

Dies sollte erzeugen:

  • 200: if Ressource vorhanden ist
  • 404: wenn die Ressource nicht

die zweite o existiert ne scheint mehr wie "SOAP" -ähnlichen Web-Service, wo Sie eine "Funktion" (/ users/search /) mit einigen "Parameter" (Benutzername, E-Mail) definieren ...

+0

Ich änderte sie, denn wenn die Ressource existiert, ist es nicht verfügbar. Wenn es nicht existiert, ist es verfügbar. –

+1

Entschuldigung (wird meine Antwort bearbeiten) ... Ich habe nicht auf diese Weise "gelesen", Sie meinen, es gibt "200" zurück, wenn der Benutzername verfügbar ist ... Ich verstehe, aber es ist ein bisschen verwirrend nach der Semantik von die GET-Ressource. Vielleicht sollten Sie in Betracht ziehen, das im Client zu behandeln, dh im Client überprüfen Sie, ob die Ressource nicht verfügbar ist, Sie können sie erstellen (Benutzername ist verfügbar) ... Aber das ist meine Interpretation, ich denke, es gibt eine ganze Menge Raum für Interpretation :) – emgsilva

1

Für einzigartige Felder, erste Option ist eine gute Anpassung (/ users/email oder/users/username /), für nicht-eindeutige Felder Suche wäre angemessener.

0

ich würde empfehlen, verwenden Sie HEAD Anfrage anstelle von GET.

Die Verwendung eines GET kann ein Sicherheitsproblem darstellen. Ein Hacker kann eine Kombination verwenden, um gültige Benutzername als GET zu identifizieren entweder würde in 200 oder 404.

0

Sie sollten versuchen, eine Liste der Benutzer von

GET /[email protected] 

mit Ihrer E-Mail zu erhalten Und hier können Sie 1 finden Artikel oder 0 Artikel. Im ersten Fall ist die Adresse nicht eindeutig. In einem anderen - es ist einzigartig

Verwandte Themen