我正在尝试使用 Olingo 提供与 OData 服务交互的客户端(也是用 Olingo 编写的)。我正在尝试发送 PATCH。但是,标准验证例程正在启动,如果我不包含使用标准 Olingo 工具标记为不可为空的实体元素,我会收到错误消息。
在https://olingo.apache.org/doc/odata2/tutorials/OlingoV2BasicClientSample.html它说:
使用 HTTP MERGE/PATCH 也可以只发送要更新的数据作为 POST 正文并忽略未更改的数据。但这(当前)未在此示例中显示。
不幸的是,我不确定如何执行此操作,似乎没有任何地方可以向 EntityProvider.writeEntry 方法标记它是 PATCH 而不是 POST/PUT
EntityProviderWriteProperties properties = EntityProviderWriteProperties
.serviceRoot(rootUri).omitJsonWrapper(true).contentOnly(true)
.build();
// serialize data into ODataResponse object
ODataResponse response = EntityProvider.writeEntry(contentType,
entitySet, data, properties);
此时在我的代码中,如果“数据”不包含我的不可为空字段的条目,我会收到错误消息。该响应还为不在我的“数据”中的实体的所有属性返回空值。
我通过操纵响应以在“标准”生成之后删除不在我的“数据”中的所有条目来处理这个问题,但想象必须有更好的方法,即使我看不到它。关于如何处理这个问题的任何建议?