我会在我的应用程序中开发一些Restful服务,比如(URI):
xxx/method/blah yyy/method/bleh zzz/method
所有这些资源(xxx,yyy,zzz)都是我公司的特定产品,现在我需要为它们设计销售定义。我想:
xxx/sell yyy/sell zzz/sell
但看起来我没有凝聚力,因为我认为卖出行为应该是一种独特而具体的资源,例如:
transaction/sell/xxx transaction/sell/yyy transaction/sell/zzz
这是什么(应该)就在这里?
感谢。
答案 0 :(得分:1)
要成为RESTful,您希望动词(例如“sell”)成为HTTP方法。 URI应该标识资源,而不是要对资源采取的操作。
答案 1 :(得分:0)
我认为您正在尝试在功能导向设计(功能,销售,处于中心,它对不同实体,产品执行操作)和面向对象设计(对象,产品,是在中心,每个对象都有方法,如卖出)。
这里没有“正确”和“错误”的答案 - 这实际上取决于你的语言范式。因此,我认为您应该使用您正在实现该服务的语言进行确认:如果它是OO(面向对象)语言(并且您使用OO语言的可能性最大),则应使用OO方法。
在Java + RESTEasy(例如)中,实现方法非常明显:
@Path("product")
public class Product {
// Product fields
// ...
@Path("sell")
@GET
public void sell(){
// Selling implementation
// ...
}
}
RESTEasy框架会将http://.../product/sell的请求转换为对产品对象实例的sell()调用。