Java REST获取列表方法的容器类

Java REST获取列表方法的容器类,java,json,rest,convention,Java,Json,Rest,Convention,我遇到了一种情况,我认为这是一个不遵守REST惯例的问题。请考虑这一点,我有一个API,允许通过REST API < /P>处理图书记录。 http://localhost:8080/api/books 在我看来,当我进行GET检索列表时,这就是我所期望的: [{"name":"some book name", "price":"5" }, {"name":"second book", "price":"100" }

我遇到了一种情况,我认为这是一个不遵守REST惯例的问题。请考虑这一点,我有一个API,允许通过REST API < /P>处理图书记录。
    http://localhost:8080/api/books
在我看来,当我进行GET检索列表时,这就是我所期望的:

    [{"name":"some book name",
      "price":"5"
     },
     {"name":"second book",
      "price":"100"
     }
    ]
上面的JSON允许我使用Gson轻松地反序列化到对象列表/数组

但是,由于某种原因,此API的实现使其返回:

    {"books": [{"name":"some book name",
                "price":"5"
               },
               {"name":"second book",
                "price":"100"
               }
              ]
    }
如您所见,我现在需要使用一个名为“Books”的容器类对进行反序列化,然后从Books的一个方法获取book数组


我认为使用一个没有提供更多价值的容器类(它只是一个列表容器)是一个坏主意,但我对管理大型系统的RESTAPI所涉及的所有方面都不是专家/非常有经验。因此,如果你们中的任何人能告诉我这是否很好,或者这是一个麻烦的征兆(如果可能的话,请解释),我将不胜感激。

从我的经验中看到这是很正常的事情。它是否是最佳实践是一个意见问题。您希望资源返回一个图书项目数组还是一个图书项目?无论哪种方式,都很容易与GSON/Jackson/任何东西进行反序列化。有时,这是因为列表容器中有其他元数据,如返回部分结果时的total count。

我想我的问题是Books类除了使用它以获取图书列表之外没有其他用处。因此,我不明白为什么我们需要它,而我们只需要做listbooks=gson.fromJson(…);至于对资源的期望,需要一个列表(这是惯例,不是吗?)。如果是一本书,我们不使用…/books/{id}吗?也许我不理解你的评论,我想你理解了。我只是问你希望看到什么。我在野外看到了这两种方法。你的论点是正确的,但我认为其他人可能不同意。酷,我喜欢“你的论点是正确的”部分,谢谢你的鼓励。希望看到其他大师可以在这里分享什么。你的偏好是什么?我喜欢你的方式,但我经常从另一个角度看问题。有时是因为列表容器中有其他元数据,如返回部分结果时的total count。