2

我有一个 API,它接受来自网站、android 设备和 ios 设备的请求。现在,我必须存储在创建它们的 API 调用中创建的实体中。因此,例如,如果用户从他的 android 应用程序创建了一个新实体,我也应该在该实体中存储该信息。我的问题是我应该如何在 API 上实现它。我有 3 种方法可以做到这一点:

1 - 让 api 用户在请求正文中发送该新字段。我不喜欢这种方法,因为发送的数据实际上并不是指创建的实体,它更像是元信息。

2 - 让 api 用户发送一个新标头,例如“X-Origin: android” 我不喜欢这个,因为我不热衷于为该信息创建一个新标头的想法,而我可以使用用户代理标头。

3 - 使用 User-Agent 标头 这是我倾向于使用的标头,但我真的可以相信它吗?如此多的具有如此多不同标头的 android 设备。在 android 应用程序中,我使用的是 Apache 的 HTTP 客户端,所以它发送的标头是

'User-Agent': 'Apache-HttpClient/UNAVAILABLE (java 1.4)'

尽管我可以使用 System.getProperty("http.agent") 检索“正确”标头,但对于我的手机来说是:

"Dalvik/1.6.0 (Linux; U; Android 4.3; Nexus 4 Build/JWR66Y)"

此信息不是必需的,因此不提供它不会改变 API 的行为方式。实体仍将被创建,但没有额外的信息。

做这个的最好方式是什么?

4

1 回答 1

0

我真的不认为 1 或 2 有问题。 3 由于您列出的原因,我会避免使用,而且它是一个移动目标。

于 2013-10-03T18:35:35.370 回答