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

我试图在HTTP方法语义之后创建一个REST API,但我被DELETE方法困住了。

在我的用例中,该服务位于验证用户身份的网关之后。 此服务使用SSO令牌,然后用于验证用户并获取他的详细信息。 从这一点上,我试图打电话给我的服务,我使用我想要删除的资源的id作为路径变量,但是我不知道如何传递用户ID进行验证。

我读过很多关于向DELETE方法添加正文的问题。 我也认为添加自定义标题来标识用户不是正确的方法。 在我有的选择中,我认为只有2个是合理的:

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


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

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

    HTTP认证,也许? 这就是它的目的,不是吗? 请参阅RFC 7235。

    链接地址: http://www.djcxy.com/p/22237.html

    上一篇: How to pass authentication details in a HTTP DELETE request?

    下一篇: Single Sign On with Azure Active Directory