Я использую Java Immutables для своих классов запросов / ответов, который выглядит примерно так:
@JsonDeserialize(builder = ImmutableMyRequest.Builder.class)
@Immutable
public interface MyRequest {
@Nullable String getA();
@NotNull String getB();
...
}
Теперь мне нужно добавить новое поле в мой запрос:
@JsonDeserialize(builder = ImmutableMyRequest.Builder.class)
@Immutable
public interface MyRequest {
@Nullable String getA();
@NotNull String getB();
@Nullable String getC(); // Edit
...
}
В моем понимании это не должно нарушать совместимость, и более старые клиенты должны просто игнорировать новые поля, но когда я использую более старую версию с новым запросом, происходит сбой:
Unexpected status. Expected: 200. Actual: 400. Response: InboundJaxrsResponse{context=ClientResponse{method=POST, uri=http://some.url.here, status=400, reason=Bad Request}}
Я используя javax.ws.rs.client.Invocation.Builder
для публикации моих запросов.
Любая помощь здесь?