我有一个棘手的情况,我需要使用相同的 URI 来调用 POST 操作,一个用于单个对象,另一个用于具有相同类型对象的数组。问题是我无法更改 URI。 e.g.
POST /my-services/v1/users with single user object as part of request body
&
POST /my-services/v1/users with array of user objects as part of request body
我无法更改第二次操作 e.g 的 URI。 /my-services/v1/ 批量 -users
那么,问题是,如何在 REST API 中添加此类方法?
2 回答
在大多数 JSON 映射器中(例如
Jackson
),您可以设置属性ACCEPT_SINGLE_VALUE_AS_ARRAY
,它基本上将单个对象视为一个数组,因此您可以定义一次端点(对于集合)。然后实现端点,因为它始终将
Collection
作为输入,即使客户端将发送单个 JSON 对象,它也将由 mapper 处理。我会说添加另一个参数。
例如,
POST ... type=single&req=(user object)...
为第一个。POST ... type=array&req=[user object]...
为第二个。使用 switch case 或 if 检查服务器上的类型。
Tim 说,发送数据并检查服务器上的类型。