将事件队列建模为一个宁静的服务是否可以接受?

Rem*_*Rem 0 architecture rest

我一直在关注RESTful Web服务,并且想知道如何在REST中建模事件队列.

假设事件队列在URL访问:HTTP://my.domain/events,在我看来是应用于此URL POST操作是可以的,因为它会在事件添加到代表队列列表的末尾.此外,如果我对此URL执行GET操作,在我看来,返回队列的头部也没关系.

我的问题是 - GET操作是否也可以删除队列的头部或者是否应该通过单独的DELETE操作执行?

Mak*_*kov 5

GET操作是否也可以删除队列的头部

不,它不是来自REST的角度.根据REST最佳实践,GET请求应该是安全的.对URL进行任意数量的GET请求应该与不发出任何请求具有相同的效果.
还有一个关于你的设计的问题.检索队列头通常有两种常见模式:

  1. 第一个是获取头,处理它然后通知队列如果成功处理则删除消息,如果没有,则消息返回队列以便稍后再处理.这是一种更强大的方法.
  2. 第二个是获取队列头并同时删除它,就像你在问题中描述的那样.

为了支持这两种模式,我认为您应该只在执行GET时检索消息并实现DELETE方法,以便将已删除的消息对象作为响应返回.这样您就可以遵守REST统一接口,并且您的队列客户端将能够实现这两种模式.

希望能帮助到你!