为不同类型的响应设计 POST 响应主体

Designing POST response body for different types of responses

在我的客户端应用程序中,我对 \validate 端点进行了 POST 调用。此调用是为了在服务器端执行控制器而不是创建任何资源。作为响应,服务器可以提供两个完全不相关的 JSON 对象之一。从客户端,我如何知道在反序列化过程中我应该使用两种类型中的哪一种?执行此操作的干净方法是什么?

有多种方法可以实现。

  1. 在 http 响应中添加一些 header 以确定 body 类型。客户端应检查 header 并使用相应的反序列化器。这是 webhooks API 的典型方法,其中您有一个端点来处理不同的事件类型。例如,您可以检查使用 x-amz-sns-message-type header 定义响应类型的 AWS SNS API

  2. 作为替代方案,您可以使用特殊的 body 格式,其中包含一些 type 字段和 payload 取决于此类型。

{
    "type: "Type",
    "paylod": {
        ...
    }
}

但我认为这种方法对客户端来说更难处理,需要两步反序列化过程。