哪个更好:返回一个Response对象或一个表示其余资源的Object?

Atu*_*tul 4 java rest

在某些书籍中,其余的API通常会返回一个Response对象,该对象包装了一些表示有效负载,状态等的其他对象.

另一方面,我看到和编写的许多API都将POJO(或称之为DTO)作为JSON返回,这是客户端使用的.

这可能是基于意见的,但我想知道在高可伸缩性环境中使用哪个更好,其中一些请求导致成功而另一些请求失败/数据未返回.

我想知道是否有更好的做法.这将有助于我设计一些API并在我的团队面前展望.但是,如果"两个人中更好的"是基于意见的话,我可以将这个问题关闭.

谢谢.

更新:其余两个API将如下所示.避免像@ Path,@ Get,@ PathParam,@ Produces等代码

public Response myCustomerObject(int id){...} 
Run Code Online (Sandbox Code Playgroud)

这将返回包含在Response对象内的Customer对象.响应也可能是错误的.

以下方法将直接返回Customer实体:

public Customer myCustomerObject(int id){...} 
Run Code Online (Sandbox Code Playgroud)

wer*_*ero 6

我会投票给一个给你一个 Response 对象的 API。这使您可以在代码中完全控制响应,并且很清楚响应的内容。如果您想编写一个不能轻易由 POJO 表示的 Response,您不会被迫使用不直观的解决方法。

从 rest 处理程序方法返回一个对象,然后将其转换为响应对于我的口味来说是太多的框架魔法。

最糟糕的 - 恕我直言 - 是从 rest 处理程序方法返回字符串的做法,然后将其解释为模板引用(例如,JSP 资源的路径),然后将其写入响应。再次方式太多的魔法。


小智 5

我更喜欢返回自定义数据对象,如果响应对象.基于注释的框架的重点是从应用程序逻辑中抽象出http方面.应用程序开发人员不是管理响应代码和实体,而是返回模型对象并抛出可以映射到映射器中的http代码的自定义异常.它的控制力较弱,但恕我直言,它更容易快速开发api.