Search code examples
restapi-design

Designing POST response body for different types of responses


From my client application I make a POST call to a \validate end-point. This call is made to execute the controller on the server side and not to create any resource. In response, server can provide one of the two totally unrelated JSON objects. From the client, how do I know which of the two types I should use during deserialization? What is the clean way to do this?


Solution

  • There are multiple ways to do it.

    1. Add some header to the http response to determine body type. Client should check header and use corresponding deserializer. This is a typical approach for webhooks API where you have single endpoint to process different event type. As an example, you could check AWS SNS API that uses x-amz-sns-message-type header to define response type.

    2. As an alternative you could use special body format with some type field and payload that depends on this type.

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

    But from my opinion this approach is much harder to handle for the client and would required 2-step deserialization process.