首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否应该与您的域模型紧密关联?

是否应该与您的域模型紧密关联?
EN

Stack Overflow用户
提问于 2013-10-08 15:22:48
回答 1查看 86关注 0票数 0

给出以下类(注意:这些类没有讨论,它们只是以这种方式存在)

代码语言:javascript
复制
class Foo {}

class Bar {}

class Event {

  Foo foo;
  Bar bar;
  String event;

  public Event(Foo foo, String event){
    ..
  }

  public Event(Bar bar, String event){
     ..
  }
}

事件与Foo或Bar相关联,但从来不与两者相关联。

您会对REST建模吗(对于api的用户来说,这或多或少是自然的):

代码语言:javascript
复制
POST /foo/{FOO-ID}/event
GET /foo/{FOO-ID}/event  --> gets the list of events for FOO with the given id
GET /foo/{ID}/event/{EVENT-ID}

POST /bar/{BAR-ID}/event
GET /bar/{BAR-ID}/event --> gets the list of events for BAR with the given id
GET /bar/{BAR-ID}/event/{EVENT-ID}

或者您更喜欢(多少反映域模型):

代码语言:javascript
复制
POST /event
GET /event?id=123&type=FOO --> gets the list events of for FOO with id = 123
GET /event?id=456&type=BAR --> gets the list of events for BAR with id = 456
GET /event/{EVENT-ID} 
GET /event --> not implemented, it would logically return ALL events(both FOO and BAR), but this has no business meaning

在两个api中,哪一个是“最”休息的?为什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-08 15:48:37

从您的模型来看,Event本身就是一个实体和一个资源。

第一种方法发送了一个不同的信息:从这个角度来看,EventFooBar的子资源,这意味着它依赖于其中的一个存在,如果它的“父”不再存在,那么它也存在。

现在我不认为你的模型有这样的关系。当然,如果没有Event /Bar,可能是没有意义的,但它确实有单独的意义。明天,Event可能会与其他新的实体相关,所以依赖它们的是Event,当它开始跟踪它们时,Event应该改变,而不是相反。

最后,查询参数的使用对于算法资源或集合的“范围”筛选器是常见的,这是您的第二个场景。

如果FooBar作为类具有Event类型的属性,则可以应用第一种方法。

这两种方法都是"RESTFul“。粗略地说,REST是指以正确的方式使用HTTP方法,并使用唯一的URI来标识唯一的资源。问题是,第二种方法更好地将模型(及其关系)描述为一组资源。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19251855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档