0

我遇到了一种情况,我认为这是不遵循 REST 约定的问题。请考虑这一点,我有一个 API 允许通过此 REST API 处理书籍记录

    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 数组。

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

4

1 回答 1

0

根据我的经验,这是很正常的事情。它是否是最佳实践是一个见仁见智的问题。您希望资源返回一系列书籍项目还是单个书籍项目?无论哪种方式,使用 GSON/Jackson/Whatever 都可以轻松反序列化。有时是因为列表容器中包含其他元数据,例如如果它返回部分结果,则为总计数。

于 2013-10-09T23:22:39.557 回答