0

在我的 RESTful API 背后的数据模型中,有几个具有 CreatedBy/ModifiedBy 字段的实体。对这些数据的唯一访问是通过我的 API,因此,应使用向我的 API 发出请求的用户的用户 ID 填充字段。

我已经考虑将这些字段添加到我的 API 公开的模型中,或者在所有 PUT/POST/DELETE 请求中期望包含用户 ID 的请求标头。我会对关于哪种方法最好或任何其他方法的任何意见感兴趣。

我喜欢在标头中提供它的想法,因为每个请求都需要它,我想知道是否有一个标准的请求标头来包含信息,或者一个通用的 x-header。

我已经看到了 from 请求标头;但是,它似乎被定义为发出请求的用户的电子邮件地址,我需要传递用户 ID。

在我们当前的实现中,我们使用授权标头通过 API 验证调用应用程序,而不是针对特定用户。

您将使用哪个标头来传递信息以识别发出请求的用户?

4

2 回答 2

1

您可以扩展 Authorization 标头以添加您自己的参数。Digest 和 OAuth 授权方案都支持参数。基本方案已经具有可读的用户凭据。就像是:

 Authorization: OAuth realm="Photos",
    oauth_consumer_key="dpf43f3p2l4k3l03",
    oauth_signature_method="HMAC-SHA1",
    oauth_timestamp="137131200",
    oauth_nonce="wIjqoS",
    oauth_callback="http%3A%2F%2Fprinter.example.com%2Fready",
    oauth_signature="74KNZJeDHnMBp0EMJ9ZHt%2FXKycU%3D",
    xoauth_user_guid="alganet"

雅虎!与他们的 OAuth 实现类似,但在另一个上下文中。

http://developer.yahoo.com/oauth/guide/oauth-accesstoken.html

但是,如果这些字段以某种方式在您的公共 API 中显示或公开,则它们属于 RESTful 资源并且应该始终在正文中表示,而不是在标题中表示。如果您在消息正文中获取用户名,您也应该使用消息正文发布用户名。

于 2013-01-10T17:52:53.807 回答
0

假设您可以使用 HttpClient

  HttpClient client = HttpClientManager.getNewClient();
  HttpMethod get = new GetMethod(...);
  get.addRequestHeader("x-newHeader", "value");

更多在这里

或使用 URLConnection 使用setRequestParameter

于 2013-01-11T08:29:14.697 回答