java - 如何使服务器端 Java 和客户端 JS DTO 属性保持一致

标签 java javascript json eclipse rest

您好,我正在寻找 Eclipse 中的解决方案/插件,以在代码库的整个演变过程中保持服务器端 Java DTO 属性及其客户端 JSON 对应物的一致性。例如,对于具有 Java 后端的 Web 应用程序,通过 REST 接口(interface)(使用 Jackson)公开 API,该 Web 应用程序在服务器上可能有这样的东西:

DTO:

public class Person {
    private String firstName;
    private String lastName;
    public Person(String string, String string2) {
        firstName = string; lastName = string2;
    }
    public String getFirstName() {
        return firstName;
    }
    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }
    public String getLastName() {
        return lastName;
    }
    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
}

REST 服务:

@Path("/data")
public class PersonService {
    @GET
    @Path("persons")
    @Produces(MediaType.APPLICATION_JSON)
    public List<Person> getAssets() {
        List<Person> persons = new ArrayList<Person>();
        persons.add(new Person("Jimmy", "Hendrix"));
        persons.add(new Person("Roger", "Waters"));
        return persons;
    }
}

在客户端,在 Javascript/JQuery 中,我们可以有这样的代码:

$.ajax('/data/persons/', function(data){ for(var i = 0; i < data.length; i++){ var firstName = data[i].firstName; var lastName = data[i].lastName; //do some stuff to populate the view with the person data } });

这一切都很容易设置。然而,随着代码库的发展和变化(一如既往),假设需要将 DTO 字段的名称从“firstName”和“lastName”更改为“foreName”和“surName”。

在 Eclipse 中,使用 Refactor 菜单项重构所有 Java 代码很简单,它会在 Java 代码中找到方法/字段的所有引用,并替换它们。请注意,Eclipse 的“重构...”不同于查找/替换操作。查找/替换对所有指定的文件进行基本文本替换。另一方面,重构考虑到 Java 是一种强类型编程语言,并搜索具有该签名的所有方法调用。

如果有一些插件或 Eclipse 功能足够智能,可以更改 Javascript 代码中对“firstName”和“lastName”的引用,那就太好了。这将节省开发人员必须只对 Java 代码进行重构,然后在 Javascript 代码中进行选择性查找/替换的时间,并减少潜在的运行时错误。有谁知道这样的工具/插件是否存在?

最佳答案

是的,我也是。这似乎是我在每份工作中都会遇到的一种模式。

我过去做过的最好的事情是从 java DTO 生成 Javascript stub ,并使用 JsDoc 指示使用这些 javascript DTO 的位置​​。

如果我今天在做同样的解决方案,我可能会看到 Swagger codegen 会给我开箱即用的东西。

Intellij 至少会高亮显示 javascript 中缺失的字段,这很有用。

要是有插件就好了,不过聊胜于无

使用 typescript ,您甚至可以通过 stub 获得编译安全性。

关于java - 如何使服务器端 Java 和客户端 JS DTO 属性保持一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30685589/

相关文章:

javascript - 将元素添加到空 JSON 对象 - Angular

mysql - 蛋糕 3 : column of type JSON stores a NULL as string "null"

java - 当外观和感觉发生变化时如何动态更改图标?

java - ojAlgo 线性规划求解器的速度

javascript - jQuery 滚动到 div onclick 不起作用

javascript - 比较数据库表字段值,与单个数据库中的两个不同表

javascript - 特定词过滤器

java - 文件显示为目录,而不是文件?

java - 复制和增强对象的最佳实践(设计模式)

javascript - json 返回我的 header 数据