【问题标题】:What is the best method for identifying which of your client libraries a client is using?识别客户正在使用哪些客户库的最佳方法是什么?
【发布时间】:2014-10-14 18:06:43
【问题描述】:

我有 3 个客户端库,它们都发布到同一个 API 端点,只是使用不同的语言(python、ruby、php)。我希望能够知道特定 API 调用来自哪个库。

我最初的想法是在 HTTP POST/GET 中添加一些信息来识别客户端库,但我不确定这是否是一个好方法。

您做了什么来验证 API 调用源自哪个库?

提前感谢您的帮助!

【问题讨论】:

  • 也许让客户端库的核心添加一个标头来指示它是哪个库。例如。 X-Client-Library: python
  • 在表单中提供一些信息是一种方法(例如 html 隐藏元素),也许是您可以追溯到客户端类型的库版本号。如果您可以控制将数据发布到您的 API,您还可以在 Web 请求中发送自定义标头。

标签: rest http-post http-get api-design


【解决方案1】:

大多数请求库都设置了默认的 User-Agent 标头。内省该标题。

Python 的 urllib2 将该标头设置为 Python-urllib/MAJOR.MINOR,其中后两个值取自 Python 版本。例如,对于 Python 2.7,您会得到 Python-urllib/2.7。其他 Python 库(如 requests)也具有唯一的默认 User-Agent 标头。

Ruby 的 Net::HTTP 库 appears to set it to Ruby.

当然,这些库中的每一个都完全能够更改 User-Agent 字符串,但大多数开发人员不会费心设置这些,除非服务器似乎根据该字符串改变他们的响应(并且除了桌面浏览器使用的 User-Agent 字符串之外,不允许任何东西访问服务器)。

【讨论】:

  • 我实际上对编写我们自己的标头(也用于确定客户端版本)很感兴趣,但这使我朝着正确的方向前进。谢谢!
猜你喜欢
  • 2015-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-07
相关资源
最近更新 更多