如何在HTTP DELETE请求中传递身份验证详细信息?

时间:2016-07-28 13:37:10

标签: java rest http authentication http-method

我尝试按照HTTP方法语义创建REST API,但我遇到了DELETE方法。

在我的用例中,该服务位于对用户进行身份验证的网关之后。此服务使用SSO令牌,然后用于对用户进行身份验证并获取其详细信息。从这一刻起,我试图调用我的服务,在那里我使用我要删除的资源的id作为路径变量,但后来我不知道如何传递用户的id用于验证。

我已经阅读了许多关于向DELETE方法添加正文的问题的帖子。我还认为添加自定义标头以识别用户不是正确的方法。在我的选择中,我认为只有2个是明智的:

  1. 以用户ID作为正文发出POST请求。我不喜欢这个,因为我基本上使用带有已识别资源的POST,因为语义上听起来不对我。
  2. 发出请求,因此用户ID是路径变量。它看起来像这样。路径/到/服务/ RESOURCEID / {RESOURCEID} /用户ID / {用户id}。我的问题是在POST和PUT请求中,userId是正文的一部分。 API不会看起来一致,但我想我仍然可以更改其他2,因此用户ID也是网址的一部分。
  3. 有什么建议吗?

2 个答案:

答案 0 :(得分:2)

您应该使用HTTP标头参数来传递用户令牌。

@DELETE
@Path("/{id}")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Info deleteInfo(
        @HeaderParam("Authorization") String token,
        @PathParam("id") Long id){
}

答案 1 :(得分:0)

HTTP身份验证,也许?这是什么,不是吗?请参阅RFC 7235。