布尔查询的适当响应(如果资源存在)是什么?

3
我有一个 REST 服务端点可以检查用户名是否可用。目前,我将其返回一个布尔值的 xml 或 json ,但这让我感到很尴尬。我考虑如果用户名可用,则返回 "200 OK",如果不可用,则返回 "409 Conflict" 或 "423 Locked",但这样做也觉得有些奇怪。
因此,我的问题是,针对这种服务响应,是否有适当/标准的响应方式?如果有的话,具体是什么?

我认为将您的值以xml/json结果返回没有任何问题。即使是像您描述的这样简单的东西,这也是非常标准的做法。事实上,我认为使用HTTP响应来确定布尔值会更加笨拙 - 这不仅会给开发人员带来麻烦,而且会给未来的开发人员带来维护上的困难。 - George Johnston
1个回答

3

如果我正在开发这个RESTful服务,我将返回一个HTTP状态码404 [NOT_FOUND],并且在消息体中包含一些内容(例如布尔值),表示找不到username

原因:
REST基本上是与资源紧密耦合的术语。在这种情况下,username是一个资源。您正在使用服务查询并检查“资源的状态”(即:用户名是否已经存在)。由于REST建立在HTTP之上,因此方便地发送HttpStatus代码与您针对资源所做的状态检查相关联。

您可以将其视为“从一个主题为找不到您所请求的内容的组织中收到一封寄给您的信件,并且信件正文说道尊敬的Sinaesthetic,我们搜寻了您要查找的内容,但很遗憾我们没有找到”。

希望我表达清晰明了。


我决定采取这样的方式,即不是检查用户名是否可用,而是检查它们是否已经存在。如果存在,我返回200;如果不存在,则返回404。谢谢! - Sinaesthetic
@Sinaesthetic 没错,这就是RESTful的方式。很高兴能帮到你。 :) - dmahapatro

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接