我有一个棘手的情况,我需要使用相同的URI来调用POST操作,一个使用单个对象,另一个使用相同对象类型的数组。问题是我无法更改URI。 例如
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
我无法更改第二次操作的URI,例如/ my-services / v1 / 批量用户
所以,问题是,如何在REST API中添加此类方法?
答案 0 :(得分:0)
在大多数JSON映射器中(例如Jackson
),您可以设置属性ACCEPT_SINGLE_VALUE_AS_ARRAY
,该属性基本上会将单个对象视为数组,因此您可以一次定义端点(用于集合)。
然后,您将实现端点,因为它始终以Collection
作为输入,即使客户端发送单个JSON对象,它也将由mapper处理。
答案 1 :(得分:0)
我会说添加另一个参数。
例如,
POST ... type=single&req=(user object)...
(第一个)。
POST ... type=array&req=[user object]...
用于第二个。
使用开关的大小写或是否在服务器上检查类型。
按照Tim所说的发送数据并在服务器上检查类型。