是否有默认的http请求标头来标识发出请求的用户?

时间:2013-01-10 17:29:28

标签: http rest http-headers

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

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

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

我见过来自请求标题;但是,它似乎被定义为发出请求的用户的电子邮件地址,我需要传递用户ID。

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

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

2 个答案:

答案 0 :(得分:1)

您可以扩展Authorization标头以添加自己的参数。摘要和OAuth授权方案都支持参数。 Basic方案已经具有可读的用户凭证。类似的东西:

 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资源,应始终在正文中表示,而不是标题。如果您在邮件正文中获取用户名,则还应使用邮件正文POST用户名。

答案 1 :(得分:0)

假设您可以使用HttpClient

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

更多here

使用setRequestParameter

使用URLConnection