需要在REST API请求中包含cookie是个好主意吗?

3

我的想法是将rest api中的URI视为唯一资源,除了客户端位置的上下文,该位置存储在cookie中。这种方法有什么缺点吗?

3个回答

2
从哲学的角度来看,如果不通过URL唯一标识资源的话,它并不是真正的REST(至少我根据Fielding的解读是这样的)。
从实用的角度来看——这基于我的经验——如果你需要网络服务调用使用cookie,那么你会有很多痛苦。主要是因为这是一个必须在不同代码路径上管理的信息,使得客户端代码更加复杂。你也会遇到域和代理的问题(特别是如果你在服务和传统Web应用程序之间共享cookie),而且它不能在客户端之间移植。
如果您想根据位置生成不同的内容,为什么不使用地理位置服务呢?
编辑:为什么不将位置作为请求URL的一部分?你仍然可以使用cookie存储这些信息,并通过JavaScript检索。这将使您的服务接口保持清洁,并允许您轻松地从其他客户端使用该服务。

我实际上正在使用地理位置服务,但用户将有选择他们的位置的选项。想法是始终将位置存储在 cookie 中,以便:a)用户可以指定一次位置,然后它将在 cookie 中持久化。b)由于第一次查找后缓存在 cookie 中,因此不需要在每个请求上执行 IP 查找。好吧,至少到目前为止这就是我的想法... - Michael Erasmus

1
作为一个API,你应该把方便客户端程序员使用放在首要位置。在许多支持HTTP的库中,将cookie放入HTTP请求中比将查询参数放入URL中更困难。

0
我会担心缓存的问题。用户在位置A发出一个请求,它被缓存了,然后用户移动到B并再次发出请求,结果得到的是位置A版本的请求。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接