我的客户端和服务器使用以下请求对象进行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错误请求。
服务器是否可以接受旧请求并将空字段设置为默认值?
答案 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)