使用REST语义在GET请求中传递额外的内容

时间:2012-07-23 19:59:36

标签: api rest get

我正在设计一个REST API,我想知道使用REST语义允许数据从客户端传递到GET请求的正确方法。

一个简单的用例是,当从服务器获取一些数据时,我希望客户端可以选择传递客户端中已存在的数据的哈希列表,以便服务器可以排除如果数据没有改变,那么响应中的数据。

快速搜索显示使用查询字符串是正确的方法。

例如,

GET / api / v1 / Products?productsInClient?id1 = MD5_HASH_1& id2 = MD5_HASH_2可以是一种设计。

但是,我最好在请求体中传递查询字符串数据,因为查询字符串中的id数量可能会变得非常长。是否可以在GET请求的主体中传递此类信息,并且仍然符合REST语义。

另一种选择是将其作为POST请求 - 但我不愿意这样做,因为请求实际上并没有在服务器上创建新资源。唯一额外的服务器操作是排除客户端中已存在的某些资源。

1 个答案:

答案 0 :(得分:1)

您可以使用自定义http标头。 某些Web服务器(例如,参见here)也存在问题,这些服务器具有与URL长度相关的限制,出于安全原因可以设置为最大大小的长度以及解释{{ 3}}