哪个更好:返回一个Response对象或一个object来表示剩余的资源



在一些书中,其他api通常返回一个Response对象,该对象封装了一些表示负载,状态等的其他对象。

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

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

我想知道是否有一个公认的更好的做法。这将帮助我设计一些api,并在我的团队面前正确看待问题。但是,如果"两者中孰优孰劣"是基于太多的意见,我可以结束这个问题。

谢谢。

更新:剩下的两个api看起来是这样的。避免使用@Path, @Get, @PathParam, @Produces等代码

public Response myCustomerObject(int id){...} 

返回一个包裹在Response对象中的Customer对象。响应也可能是错误。

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

public Customer myCustomerObject(int id){...} 

我会投票给给你一个响应对象的API。这使您可以在代码中完全控制响应,并且可以清楚地了解响应中的内容。如果你想要编写一个不能用POJO表示的响应,你不必使用不直观的变通方法。

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

最糟糕的是,从rest处理程序方法返回一个String,然后将其解释为模板引用(例如JSP资源的路径),然后将其写入响应。魔法也太多了。

我更喜欢返回自定义数据对象而不是响应对象。基于注释的框架的全部意义在于将http方面从应用程序逻辑中抽象出来。应用程序开发人员不再管理响应代码和实体,而是返回模型对象并抛出可以映射到映射器中的http代码的自定义异常。虽然控制较少,但在我看来,快速开发api更容易。

一个返回的响应对象包含您的数据是得到遗产的请求/响应服务,如SOAP和HTTP,但REST服务建立在资源的概念上,而不是请求/响应所以我更喜欢使用对象代表您的实际资源没有包装,如何可以REST服务代表您的资源直接响应对象,例如,如果你调用资源,如汽车:

http://localhost/car GET for list of cars

http://localhost/car/1 GET获取id为1的车

如何在响应对象中表示?

相关内容

最新更新