Java restfulurl设计

Java restfulurl设计,java,rest,spring-mvc,restful-architecture,Java,Rest,Spring Mvc,Restful Architecture,我们有一个函数来检查地址是否有效 起初,url就像 /地址/验证/{city}/{state}/{zipCode} 但后来我认为address的所有参数都只是一个资源。 所以我把它改成了 /地址/验证/{city}.{state}.{zipCode} 我不知道哪一个更好,你有什么建议?第一个。因为它是有效的android可解析uri第一个。因为它是有效的android可解析uri在这种情况下,我会选择/address/validate?city={city}&state={state}&zipc

我们有一个函数来检查地址是否有效

起初,url就像

/地址/验证/{city}/{state}/{zipCode}

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

/地址/验证/{city}.{state}.{zipCode}


我不知道哪一个更好,你有什么建议?

第一个。因为它是有效的android可解析uri

第一个。因为它是有效的android可解析uri

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

为什么??这只是我的意见。但可以将路径(URI)看作表示的唯一标识符。通常是模型域的一部分。因为您没有存储(大概)验证结果,所以只需创建一个验证资源

把它当作一种方法。参数为查询参数

因此,执行此操作时,validate(是否有效)的表示形式由参数修改

将rest看作一种表示,在您的示例中,我猜想
/address/
作为一种资源存在,并且它在您的数据模型上有一种表示。因此,您可以
POST
PUT
和或
GET
来创建、修改和检索


但是如果您想要一个
/address/validate
,这可能就是验证的结果。因此,我将使用我的示例。

在本例中,我将使用
/address/validate?city={city}&state={state}&zipcode={zipcode}

为什么??这只是我的意见。但可以将路径(URI)看作表示的唯一标识符。通常是模型域的一部分。因为您没有存储(大概)验证结果,所以只需创建一个验证资源

把它当作一种方法。参数为查询参数

因此,执行此操作时,validate(是否有效)的表示形式由参数修改

将rest看作一种表示,在您的示例中,我猜想
/address/
作为一种资源存在,并且它在您的数据模型上有一种表示。因此,您可以
POST
PUT
和或
GET
来创建、修改和检索


但是如果您想要一个
/address/validate
,这可能就是验证的结果。所以我会举我的例子。

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

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


在我看来,这可能更为“Restful”。

我认为这两种URL都不是有效的Restful URL

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


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

我认为用正斜杠分隔它更干净。你可能不得不自己用句点分割参数,对吗?这可能有助于我认为用斜线分隔参数更为清晰。您可能必须自己用句点分割参数,对吗?这可能有帮助/地址/不作为此API的资源存在,我只是将其用作名称空间,因为我们可能有其他验证。我使用这个API在用户提交表单之前验证地址。这是一种有效的方法。您不喜欢params的什么?/address/不作为此API的资源存在,我只是将其用作名称空间,因为我们可能有其他验证。我使用这个API在用户提交表单之前验证地址。这是一种有效的方法。你不喜欢那些女人的什么?