我正在设计一个 REST API,我想知道允许数据从客户端传递到使用 REST 语义的 GET 请求的正确方法。
一个简单的用例是,当从服务器获取一些数据时,我希望客户端可以选择传递客户端中已经存在的数据的哈希列表,以便服务器可以排除该数据如果数据没有改变,它的响应。
快速搜索表明使用查询字符串是正确的方法。
例如,
GET /api/v1/Products?productsInClient?id1=MD5_HASH_1&id2=MD5_HASH_2 可能是一种设计。
但是,理想情况下,我希望在请求正文中传递查询字符串数据,因为查询字符串中的 id 数量可能会变得非常长。在 GET 请求的正文中传递此类信息并且仍然符合 REST 语义是否可以接受。
另一种选择是将此作为 POST 请求 - 但我不想这样做,因为该请求并没有真正在服务器上创建新资源。唯一的附加服务器操作是排除客户端中已经存在的某些资源。