2016-12-07 62 views
0

我面临着以下情况:是否允许为其表示计算对象的属性?

我有一个Post对象,即通过多对许多关系到一个Comment对象链接。一个Post可以有最多2个标记为“Top”的。我需要公开一个API来提供列出帖子的功能(以及显示Post的详细视图,但这个没关系)。问题是,一个Post可以有一个巨大的Comment的S量,而且我不认为自己显示此表示:

[{ 
    title: "Lorem ipsum", 
    .... 
    comments: [{ 
      "author": "...", 
      "comment": ".....", 
      "top": false 
     }, ... // repeat a few thousand times 
    ] 
},... 
] 

但是,我知道,大多数消费者该API将在后面的要直接显示在顶部评论(县),所以我想揭露这个表示的:

[{ 
    title: "Lorem ipsum", 
    .... 
    topComments: [{ 
      "author": "...", 
      "comment": ".....", 
     }, .... // repeat once more if needed 
    ] 
},... 
] 

在这里,我选择不显示所有的意见,这可以通过/职位/ ID_OF_POST /评论进行访问,但是我计算在“运行时”一个topComments属性(它不在代码中的原始对象中),并显示注释s标记为顶部

是否允许使用业务逻辑进行计算并公开显示的对象中不存在的属性?如果稍后我想添加一个新的numberOfComments计算的属性,它会继续吗?

预先感谢您为您的回答

+1

是的,它被允许,它被命名为“瞬态”或“虚拟”属性。 –

+0

@查看http:// stackoverflow。com/questions/22926254/add-custom-property-to-serialized-object –

+0

@MathieuDormeval你可以发布这个答案吗?我会很高兴接受它,因为它已经完美地回答了我想要的! :) – Lucio

回答

1

是的,它是允许的,它的命名“短暂”或“虚拟”属性。

有了Symfony Framework,你可以像this那样做。

希望这有助于!

1

是否允许使用计算业务逻辑

当然是。

并揭示一个属性不存在的对象表示?

我不会返回不同的表示但使用不同的资源得到的顶部意见收集资源。

GET /posts/{postId}/top-comments 

会以相同的形式返回注释的数组作为完整列表,但只有顶部意见将被包括在内。

您还可以在原来的收集使用过滤器:

GET /posts/{postId}/comments?top=true 
+0

但是,由于顶级评论数组非常小(最多2个对象),我可以直接将其包含在帖子列表的表示中吗? – Lucio

+1

当然,为什么不呢? – 2016-12-07 13:34:11

相关问题