【问题标题】:API: use HTTP headers to control business flowAPI:使用HTTP头控制业务流
【发布时间】:2018-01-09 02:03:12
【问题描述】:

我刚刚听说使用 HTTP 标头来控制业务流是不好的做法。谁能给我解释一下为什么?

在我的例子中,默认响应只包含简单的信息,但是如果你添加 X-Full-Info 标头会有更多信息,但请求处理会花费更多时间。为什么这是不好的做法?有人建议我使用查询参数。

【问题讨论】:

  • 为什么在这里使用自定义的http头而不是RESTful风格并使用标准的accept / content头来控制返回的数据量?

标签: rest api architecture


【解决方案1】:

一个原因是缓存。假设您使用的是 GET,结果可能会被缓存,如果结果是从缓存中提供的,那么您的 http 标头将被忽略。 (远程缓存或浏览器缓存)

但是如果使用查询参数选择结果,缓存会知道返回哪个结果,不会返回错误的结果。

您可以尝试使用“Vary”标头来解决此问题,但对该标头的支持意味着您需要做更多的工作,并且对该标头的支持并不广泛:https://blogs.msdn.microsoft.com/ieinternals/2009/06/17/vary-with-care/

【讨论】:

  • 服务器可以将Vary 标头设置为“X-Full-Info”来解决此特定问题。但我同意使用正确的 URI 更好。
  • @RobertBräutigam 我在回答中添加了更多信息。 (不过,我当时忘记登录了)希望对您有所帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-22
  • 2013-04-01
  • 2015-10-26
  • 1970-01-01
  • 2012-08-22
  • 2014-12-01
  • 1970-01-01
相关资源
最近更新 更多