Jersey REST请求对象更改

时间:2014-06-04 23:22:07

标签: java rest jersey client-server jax-rs

我的客户端和服务器使用以下请求对象进行POST:

class Person{

    String name = "";

    public void setName(String name){
        this.name = name;
    }

    public String getName(){
        return name;
    }

}

现在我服务器的请求对象已更改为包含年龄 -

class Person{
    String name = "";
    int age = 0;

    public void setName(String name){
        this.name = name;
    }

    public String getName(){
        return name;
    }

    public void setAge(int age){
        this.age = age;
    }

    public int getAge(){
        return age;
    }
}

同样,服务器的响应对象现在也包括年龄。

旧客户端与新服务器不兼容,因InvocationTargetException而导致400错误请求。

服务器是否可以接受旧请求并将空字段设置为默认值?

1 个答案:

答案 0 :(得分:3)

如果您使用的是json,则可以将json框架设置为忽略未知字段

在客户端:

import org.codehaus.jackson.annotate.JsonIgnoreProperties;
@JsonIgnoreProperties(ignoreUnknown = true)

OR

// jackson 1.9 and before
objectMapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
// or jackson 2.0
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

在服务器端

jackson 1.x
    @JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)

OR

jackson 2.x
    @JsonInclude(Include.NON_NULL)