[英]RESTful URL design
我们有一个功能来检查地址是否有效。
起初网址就像
/地址/验证/ {城市} / {状态} / {邮政编码}
但后来我认为地址的所有参数只是一个资源。 所以我改成了
/address/validate/{city}.{state}.{zipCode}
我不确定哪一个更好,你有什么建议?
在这种情况下,我会去/address/validate?city={city}&state={state}&zipcode={zipCode}
为什么? 嗯,这只是我的意见。 但是将路径(uris)视为表示的唯一标识符。 这通常是您的模型域的一部分。 由于您没有(可能)存储验证结果,因此只需创建验证资源。
把它想象成一种方法。 参数是query-params。
因此,执行此操作时,params会修改validate(无论是否有效)的表示。
在休息时将其视为表示,在您的示例中,我猜/address/
作为资源存在,并且它在您的数据模型上有表示。 所以你可以POST
, PUT
和GET
来创建,修改和检索。
但是如果你想要一个/address/validate
这可能是验证的结果。 所以我会选择我的榜样。
第一。 Becourse它是有效的android parseable uri
我认为后者是更好的选择。 如果用户以后要验证任何参数,并且如果添加支持,那么放弃一个参数而不是担心子路径应该处于的顺序似乎更合乎逻辑。它最终取决于设计您的应用程序也是如此,因为API设计对某些域比其他域更有意义。 我也会在参数之间添加。
我不认为它们都不是有效的restful URL。
您的描述可以被认为是“我们需要创建地址资源并对其进行验证”。 为什么不只是POST到/address
将创建一个地址资源与给定的城市,州和zipCode作为通过POST传递的数据。 现在,在该逻辑中,您将验证是否可以创建资源。 如果可以,那么您将创建它并返回该资源的唯一引用,该引用将在后续请求/address/:id/...
。 否则,如果发生验证错误,您将返回HTTP错误代码400 Bad Request
。
在我看来,这可能更“宁静”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.