这似乎是一个非常基本的问题,如果之前有人问过这个问题,我们深表歉意;请指出任何有用资源的方向。
所以我有一个 RESTful 服务来检索一些数据。但是,RESTful 服务需要一定数量的数据才能进行检索。该数据可以粗略地概括为“用户上下文”数据——服务需要使用该信息来执行检索的有关用户的信息(无论是由调用应用程序存储还是先前从另一个应用程序检索)。
由于 REST 在语义上工作,因此检索某些内容的正确动词(HTTP 方法)是 GET 请求。我见过的大多数示例 GET 请求只使用少量数据,并且数据通过 URL 传递。但是,一旦我们进入需要大量数据来进行检索的服务领域,将所有这些信息都放在 URL 中似乎是错误的。不仅如此,某些组件(通常是 255 个字符左右,IIRC)对 URL 长度有已知的限制。
似乎可用的选项是:
- 使用 POST 在请求正文中发送数据。但是,这不是语义,因为我们没有要求服务更新任何内容,只是检索。
- 将大部分信息(在我的例子中是“用户上下文”)放入 HTTP 标头中。但是,这“感觉不对”,因为标题应该用于标题,而不是数据。
- 发出多个请求以在多个 URL 中发送数据。然而,这似乎打破了无状态的目标,因为服务必须保持某种状态才能将请求捆绑在一起。
- 将数据写入数据库,然后将密钥传递给服务以从那里检索数据。然而,这将导致请求不是自包含的,并且还会引入性能瓶颈。
还有其他选择吗?这里的最佳做法是什么?