我最近一直试图尽可能地考虑REST,并且我发现自己因为非显而易见的路线而陷入困境。
在这种特殊情况下,我很想知道用于检查用户的用户名和电子邮件可用性的RESTful方式,或其他任何具有唯一性的方法。
我的直觉告诉我,我希望在GET
或/users/email
上使用必需的参数执行/users/username/
,或者GET /users/search/
的某些内容可选email
和username
的参数。如果您获得200
,则username
或email
不可用;如果你得到一个404
,那么就可以了。
我更喜欢第一个选项,因为它更明确,但是我并不喜欢罗伊菲尔丁的论文,因为他知道该怎么做。
这里最合理的方法是什么?
答案 0 :(得分:6)
第一种方法似乎更多" RESTful"。您尝试获取特定资源(通过用户名或电子邮件)并获取它(如果存在)或获取状态消息"不可用资源"。这将是:
这应该产生:
第二个似乎更像是" SOAP"类似Web服务,您可以在其中定义一个"功能" (/ users / search /)包含一些"参数" (用户名,电子邮件)......
答案 1 :(得分:1)
对于唯一字段,第一个选项非常合适(/ users / email或/ users / username /),对于非唯一字段,搜索会更合适。
答案 2 :(得分:0)
我建议你使用HEAD请求代替GET。
使用GET可能会带来安全问题。黑客可以使用组合来识别有效的用户名,因为GET会导致200或404。
答案 3 :(得分:0)
您应该尝试通过
获取包含邮件的用户列表<groupId>com.datastax.spark</groupId>
<artifactId>spark-cassandra-connector_2.10</artifactId>
<version>1.5.0-RC1</version>
在这里你可以找到1项或0项。在第一种情况下,地址不是唯一的。在另一个 - 它的独特