用于验证参数的Web服务API,还是REST?

时间:2012-04-25 08:40:49

标签: web-services api rest

我打算制作一个API(作为网络服务)来验证用户输入。

API从用户获取3个参数作为输入,检查所有参数是否有效,然后将结果(例如:true或false)返回给用户。

这是API的粗略草图(我怀疑这是RESTful):

URL: http://my.domain.com/validate/v1 (POST)
Required parameter: param1, param2, param3
Result: To response body (XML/JSON) or response header (HTTP status)

但是在谷歌搜索API设计和REST之后我发现这个API设计出了问题。

根据Wikipedia,请求和回复是围绕资源的表示形式转移而构建的。但我正在制作的API与资源无关。它没有CRUD任何资源。所有API都只是输入,验证它们并返回结果。我坚持用这个要求设计API。

欢迎对此问题提出任何建议/更正。

1 个答案:

答案 0 :(得分:2)

你的问题更适合RPC风格,但它可以很容易地映射到REST。我将如何做到这一点:

POST方法经常在REST中用于创建新资源。此新资源的表示将发布到表示相同类型资源集合的URL。如果操作成功,则返回HTTP状态代码“201 Created”,其中表示在休息体中(基本上与在帖子中发送的消息体相同)。返回的Content-Location标头显示分配给新资源的URL。如果操作失败,则会在消息正文中通过“400 Bad Request”状态代码和更详细的人工可读错误描述发出信号。

如您所见,验证已经是这种常见REST模式的一部分。根据我的理解,您的情况唯一的区别是您不想在服务器上创建(记住)此资源。所以不要。 REST并没有说你必须。如果您发现它更容易,请想象资源确实是临时创建的,但之后立即删除。如果参数通过验证,则返回状态代码“200 OK”,并返回消息正文中的参数。否则返回“400 Bad Request”。

如果动词“验证”在URL中困扰你(它不应该),请将URL命名为其他内容,也许是由三个参数组成的对象的适当名称。

希望这有帮助

Ferenc Mihaly http://theamiableapi.com