在我的RESTful API背后的数据模型中,有几个实体具有CreatedBy / ModifiedBy字段。对此数据的唯一访问是通过我的API,因此,应使用向我的API发出请求的用户的用户ID填充字段。
我考虑过将这些字段添加到我的API公开的模型中,或者期望在所有PUT / POST / DELETE请求中包含用户ID的请求标头。我会对哪种方法最好或任何其他方法有任何意见。
我喜欢在标题中提供它的想法,因为每个请求都需要它,我想知道是否有一个标准的请求标头来包含信息,或者是一个常见的x-header。
我见过来自请求标题;但是,它似乎被定义为发出请求的用户的电子邮件地址,我需要传递用户ID。
在我们当前的实现中,我们使用授权标头来使用API验证调用应用程序,而不是针对特定用户。
您会使用哪个标头来传递信息以识别提出请求的用户?
答案 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
使用URLConnection