在某些书籍中,其余的API通常会返回一个Response对象,该对象包装了一些表示有效负载,状态等的其他对象。
另一方面,我见过和写过的许多API都将POJO(或称之为DTO)作为JSON返回给客户端。
这可能是基于意见的,但我想知道在高可扩展性环境中使用哪两个更好,其中一些请求导致成功而另一些请求失败/数据未返回。
我想知道是否有更好的做法。这将有助于我设计一些API并在我的团队面前展望。但是,如果这两个问题更好,我可以将这个问题关闭。是太多的意见。
感谢。
更新: 其余两个API看起来像这样。避免使用@ Path,@ Get,@ PathParam,@ Produces等代码
public Response myCustomerObject(int id){...}
这将返回一个包含在Response对象中的Customer对象。响应也可能是错误。
以下方法将直接返回客户实体:
public Customer myCustomerObject(int id){...}
答案 0 :(得分:5)
我更喜欢在响应对象时返回自定义数据对象。基于注释的框架的重点是从应用程序逻辑中抽象出http方面。应用程序开发人员不是管理响应代码和实体,而是返回模型对象并抛出可以映射到映射器中的http代码的自定义异常。它的控制力较弱,但恕我直言,它更容易快速开发api。
答案 1 :(得分:3)
我会投票给一个给你一个Response对象的API。这使您可以在代码中完全控制响应,并且很清楚响应的内容。如果您想编写一个无法由POJO轻松表示的响应,则不必使用非直观的解决方法。
从休息处理程序方法中返回一个Object,然后将其转换为响应,这对我来说是太多框架魔法。
Worst - imho - 是从休息处理程序方法返回String的做法,然后将其解释为模板引用(例如,JSP资源的路径),然后将其写入响应。再一次太多魔术了。
答案 2 :(得分:0)
一个返回的响应对象包含您的数据正在获取SOAP和HTTP等请求/响应服务的遗产,但REST服务建立在资源概念而非请求/响应所以我更喜欢使用对象代表你的实际资源而没有包装,休息服务如何代表你的资源直接在ex的响应对象上。如果你打电话给汽车这样的资源:
http://localhost/car获取汽车列表
http://localhost/car/1获取ID为1的汽车
如何在响应对象中表示这个?