我正在设计REST服务,需要检查是否正确输入了地址.我在想的是如何设计REST接口来检查完整的街道地址是否有效.
我有这个/地址服务,例如我可以做一个POST /address/validation
返回xml/json true或false的东西,但对我来说这似乎是非常不合适的.
另一种方法是做一个GET /address?street=xxx&nr=xxx&zipcode=xxx
(和一些更多的参数)并返回200 OK,如果正确或404 Not not found,如果不正确,这可能更RESTful?
我开始做选项1)但是我想的越多,选项2)GET感觉更好......
想法?
从RESTful角度来看,您实际上正在返回一个新资源,称之为AddressValidation,它将包含您的true或false值.所以一种方法是做一个POST /addressvalidation?street=xxx
等等.我可以将结果作为JSON或使用状态代码返回.我不确定404是否合适; 您可能希望查看有关验证返回状态代码的讨论.
我GET /address?street=xxx&nr=xxx&zipcode=xxx
提出这个方法时遇到了同样的问题.对我来说,如果它返回404,这意味着字面上找不到地址(即数据库中不存在),而不是它无效(例如,邮政编码是无效的格式;不能有任何这样的地址).再次,看到链接的讨论; 似乎400是一个更恰当的回应.
怎么样?
GET /addressValidity?street=xxx&nr=xxx&zipcode=xxx => 200 OK Content-Type: text/plain true