RESTful - 销售交易的URI定义

时间:2011-02-22 14:01:50

标签: rest uri

我会在我的应用程序中开发一些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

这是什么(应该)就在这里?

感谢。

2 个答案:

答案 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()调用。