在我的系统中,我有多个服务为其资源公开REST apis。系统上的特定服务需要在特定情况下以干运行模式对其他服务进行休息调用,以便进行验证。即使请求的主体具有有意义的api有效载荷,也不会保留任何内容,也不会更改任何状态,也不会发送任何消息。棘手的部分是,如果这个服务调用一个没有实现干运行模式的REST api,它将修改资源而不是仅仅验证。只有当接收服务在其api中实现干运行时,我才需要一种方法来进行干运行请求,否则请求必须失败。
到目前为止我有这些想法:
传递查询参数
我可以传递一个标志作为查询参数,但如果api不知道参数,请求仍然会通过。
POST /resource?dry-run=true
在标题中传递标记
与查询参数类似,忽略未知的标题字段。
公开干运行api只是为了验证
此解决方案有效,因为我可以验证URL的干运行版本是否存在,但我不想仅为验证公开更多端点
POST /resource
POST /resource/dry-run
PUT /resource/{id}
PUT /resource/{id}/dry-run
将标志注入资源主体
这看起来是一个解决方案但是当api不支持此字段时,JSON序列化将失败。在那种情况下,我不知道是否因为api不支持干运行或者身体实际上存在问题。此外,由于干运不是资源的一部分,因此感觉不对。
POST /resource
{
"dry-run":true,
...
...
}
有没有更好的方法为REST api实现干运行功能,如果服务没有实现,请求将失败?