我有一个 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 的行为方式。实体仍将被创建,但没有额外的信息。
做这个的最好方式是什么?