【问题标题】:RESTful API with Spring MVC and GWT and overlay types带有 Spring MVC 和 GWT 以及覆盖类型的 RESTful API
【发布时间】:2013-08-30 00:25:58
【问题描述】:

我已经开发了一个简单的 Spring MVC RESTful API,现在我开始创建一个简单的 GWT 项目来执行对该 api 的一些请求,显然我选择通过交换 JSON 消息来完成通信。

收到响应后,我必须将其解组为 POJO。

我知道一般方法是创建所谓的“覆盖类型”,但在我看来,这只是我在 api 中编写的 java 类的副本。

所以问题是: 为什么我不应该简单地创建一个只包含执行此编组/解组的通用类的通用 api?

我可以清楚地看到,主要的好处是,如果需要任何更改,您也不必更改覆盖类型。

【问题讨论】:

    标签: java spring rest gwt spring-mvc


    【解决方案1】:

    假设您可以为您的 pojo 定义接口,您可以在客户端和服务器端共享这些接口(公共包)

    在服务器端,您必须编写用于 RESTful api 的实现代码。

    在客户端,这些接口的实现可以通过生成器自动完成。为此,您可以使用gwtquery databindinggwt autobeans

    要请求您的 RESTful api,您可以使用 gwtquery ajaxgwt requestbuilder

    每个选项都有其优点,通常我使用 gwtquery 是因为它简单且因为它的数据绑定方法更轻量级,否则,使用 autobeans,您可以在客户端和服务器端使用 autobeans 工厂创建您的 POJOS。如果您已经开发了后端,那么这不是您的目标。

    【讨论】:

      【解决方案2】:

      任何客户端都可以使用 REST 响应,而不仅仅是一个客户端。如果我正确理解您的问题,您想在 REST API 中构建编组和解组的逻辑。理想情况下,它违反了单一职责原则。如果服务发生更改,您可能需要更改映射逻辑,以便您触及 API 的两个不同方面,因为只有一个组件需要更改。

      此外,理想情况下,REST API 应该设计为与客户端无关。将它们转换为 POJO 是您的特定要求,但另一个客户端可能希望将其作为简单的纯 JSON 使用。如果您提供覆盖类型,您的代码将非常松散耦合。

      【讨论】:

      • 感谢您的快速回答 Ashish。我想补充一点,我不想在 REST 中构建编组/解组的逻辑,我只想分享这些类。假设 REST 响应是一个转换为 JSON 的 List。然后在我的客户端中,我想从中重建 Java 对象。我不明白为什么这会使我的 REST 不与客户端无关。相应地构建的是 GWT 客户端
      【解决方案3】:

      如果您的服务器端类(例如播放器)可以毫无问题地进行序列化/反序列化,那么您可以将其发送到客户端而无需任何覆盖类型/转换(在服务器上序列化为 JSON -> 传输 -> 从 JSON 反序列化在客户端)。例如,在客户端,您可以使用 RestyGWT 来归档自动反序列化过程。只有在 Player 实例无法序列化的情况下(例如它由 Hibernate 支持),才需要覆盖类型和转换过程。

      【讨论】:

        猜你喜欢
        • 2012-06-20
        • 2011-06-13
        • 1970-01-01
        • 2017-11-01
        • 2015-07-03
        • 1970-01-01
        • 2012-09-09
        • 1970-01-01
        • 2023-02-10
        相关资源
        最近更新 更多