适用于具有多种请求类型的系统的REST架构

时间:2014-12-20 16:49:49

标签: rest architecture

我正在设计一个具有多种请求类型的系统。例如,用户可以“加入”组织或“注册”事件(以及许多其他类型)。

所以我有

GET /memberships?organization=125
GET /registrations?event=2556

随着时间的推移,系统已经发展为允许请求系统,因此用户首先请求加入组织,然后由管理员批准,然后将其变为实际成员资格。同样,用户请求注册管理员批准或拒绝的事件等。

这导致了许多冗余的业务对象和设计:

POST /membership_requests {organization:"125",user:"200"}
GET /registration_requests {event:"2556",user:"200"}

提出问题,我是否应该有一个可以支持多种类型的请求系统?

POST /requests {user:"200",type:"event",item:"2556"}
  • 上行:请求的单个位置,更简单的查询,所有请求的单个代码库
  • 下行:我不再可以查询GET /membership_requests?organization=125,而是需要GET /requests?type=organization&item=125

这是一个更通用的系统,但查询看起来很奇怪。

我知道,这有点基于意见,但是在这里寻找人们对于沿着一条路走下去的影响的经验。

1 个答案:

答案 0 :(得分:0)

我看起来两种方式都没关系,所以决定的方法是什么,这会使系统变得更简单? 我的经验是,如果您必须以不同方式处理不同类型的请求,那么选择一个请求系统就变得简单了。

换句话说,如果您的请求系统可能最终得到像

这样的代码
if(type=organisation){ 
    do this
}else if(type=othertype){
    do that
}else if (type=...){
}
那么这将是一个不好的迹象。但是,如果您希望使用相同的代码处理所有不同的请求类型而没有这样的if语句,那么您的单个系统可能更简单。

查询并不奇怪。如果你有一个请求系统,你是否会以requestId结束,以便type=organization&item=125变成request=123456