RESTful URL设计

时间:2012-09-21 07:56:31

标签: java rest spring-mvc restful-architecture

我们有一个检查地址是否有效的功能。

首先,网址就像

  

/地址/验证/ {城市} / {状态} / {邮政编码}

但后来我认为地址的所有参数只是一个资源。 所以我把它改成了

  

/地址/验证/ {城市}。{状态}。{邮政编码}

我不确定哪一个更好,你有什么建议?

4 个答案:

答案 0 :(得分:4)

在这种情况下,我会选择/address/validate?city={city}&state={state}&zipcode={zipCode}

为什么呢?嗯,这只是我的意见。但是将路径(uris)视为表示的唯一标识符。这通常是您的模型域的一部分。由于您没有(可能)存储验证结果,因此只需创建验证资源。

将其视为一种方法。参数是query-params。

因此,这样做,验证的表示(是否有效)由参数修改。

将静止视为表示,在您的示例中,我猜/address/作为资源存在,并且它在您的数据模型中具有表示。因此,您可以POSTPUT和/或GET来创建,修改和检索。

但是如果你想要/address/validate,这可能是验证的结果。所以,我选择了我的榜样。

答案 1 :(得分:0)

第一个。这是有效的android parseable uri

答案 2 :(得分:0)

我认为后者是更好的选择。如果用户以后要验证任何参数,并且如果添加支持,那么放弃一个参数而不是担心子路径应该处于的顺序似乎更合乎逻辑。它最终取决于设计您的应用程序也是如此,因为API设计对某些域比其他域更有意义。我会添加&在参数之间也是如此。

答案 3 :(得分:0)

我认为两者都不是有效的宁静网址。

您的描述可以被视为“我们需要创建地址资源并对其进行验证”。为什么不只是POST到/address,这将创建一个地址资源,其中给定的城市,州和zipCode作为通过POST传递的数据。现在,在该逻辑中,您将验证是否可以创建资源。如果可以,那么您将创建它并返回该资源的唯一引用,该引用将在后续请求/address/:id/...中使用。否则,如果发生验证错误,您将返回HTTP错误代码400 Bad Request

在我看来,这可能更“宁静”。