2015-06-10 37 views
1

我不是这方面的专家,所以请告诉我,如果我的方式:)REST和一个字段的验证

我想要定义一个处理帐户的REST服务。

/Accounts/32 (GET to fetch one) 
/Accounts  (GET to fetch all) 

等等......

但是,在注册过程中,将创建一个帐户之前,我想验证几个字段,如电子邮件和SSN,异步前该帐户已创建。

我应该怎么做呢?我只想知道他们是否存在于一个组合中,但我不应该获得资源,因为这与我无关。 :)

是否有效做这样的事情?

/Accounts?ssn=123&[email protected]&operation=verifyexistance 

感谢

//约翰

回答

3

有趣的问题,对我来说我宁愿做到以下几点:?

HEAD /账户SSN = 123 &电子邮件=一个@电子邮件。 COM

如果响应状态代码是200,则资源的服务器 上存在如果响应状态代码是404,则资源不可用,并且可以与注册

HEAD方法是相同,除了在应答服务器不能返回一个消息的身体得到继续。

2

我喜欢Anas Salman的回答,建议使用HEAD。这是理想的方法。

但我也认为GET是完全没问题的。您正在请求获取有关资源(/帐户集合)的信息。

GET /accounts?ssn=123&[email protected] 

当/账户认为此格式的请求(GET要求所提供的SSN和电子邮件地址),它有足够的信息,知道用肯定或否定作出适当的反应。

在查询字符串中添加“操作”动词是您示例中唯一不重用的部分。

+0

问题是,客户端目前未经授权,不应获取任何帐户。这是一个预先创建帐户的步骤,用于在创建帐户之前确保组合的可用性。 –

+0

@JohanKarlsson我完全理解。在这种情况下,服务器只会响应“是”或“否”方式来指示SSN +电子邮件对是否有效(通过内容主体或最好是HTTP状态码)。 – DaveGauer

+0

我的操作符的原因是能够控制返回的Json,所以我知道可疑的模式。根据参数返回不同的方案是否很常见?我真的很陌生。 :) –