【问题标题】:Adding More parameters to REST HTTP GET向 REST HTTP GET 添加更多参数
【发布时间】:2012-06-11 07:06:09
【问题描述】:

我正在尝试使用 HTTP GET 请求访问 REST Web 服务。

例如,以下 URI 提供了 Rest Web 服务,该服务返回给定类别的所有可用部分。

http://localhost:8080/mycompany/parts/category

我想对每次访问以上 REST 请求的用户进行身份验证/授权,并且我想通过 HTTP 获取请求传递用户身份验证详细信息(用户名和令牌)。

是否有可能在 REST HTTP GET 请求中满足上述要求(使用 HTTP 标头或查询参数)?

使用 HTTP POST 代替 HTTP GET 更好吗?

【问题讨论】:

  • 你有什么样的认证机制?您打算使用标准的 BASIC/DIGEST 机制还是自定义身份验证?
  • 它是否接受 HttpHeader 身份验证令牌取决于 Web 服务。一些服务使用 OAuth,通常使用 http 标头。检查服务文档(如果有)... 关于 POST/GET - 它们通常用于不同的操作 - GET 用于读取,POST 用于保存。您通常不应该混合使用它们 - 每个都用于特定的命令。
  • @SureshKumar 我计划使用自定义身份验证机制。我不知道是否可以在 REST 中使用标准 Auth 方法。我正在阅读它

标签: rest jboss get restlet restful-url


【解决方案1】:

既然您正在获取信息,您应该使用“获取”。这是我用来将 oauth_token 添加到请求中的代码(它基于 Restlet)...

import org.restlet.data.Reference;
import org.restlet.ext.oauth.OAuthUser;
import org.restlet.representation.Representation;
import org.restlet.resource.ClientResource;

Reference commitsRef = new Reference(Consts.RESOURCE_BASE + "commitments/"); 
OAuthUser u = (OAuthUser) request.getClientInfo().getUser();
String token = u.getAccessToken();  
ref.addQueryParameter("oauth_token", token);
ClientResource commitsResource = new ClientResource(getContext(), commitsRef);
Representation commitsRep = commitsResource.get();

如前所述,这是基于 Restlet 的,但在您使用的框架中可能有类似的东西。 (如果您不使用框架,Restlet 可以使这更容易)。

【讨论】:

    【解决方案2】:

    如果你使用 restlet 那就更好了,因为 restlet 有丰富的 api 用于 rest 框架

    但如果你想验证比没有这个 你可以用 GET 或 POST 做同样的事情

    但是通过cookie发送您的凭证数据

    并使用@CookieParam从服务器端读取相同的cookie 这样您就可以轻松地对用户进行身份验证。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-20
      • 1970-01-01
      • 2015-01-11
      • 1970-01-01
      • 1970-01-01
      • 2015-04-22
      • 1970-01-01
      • 2012-11-27
      相关资源
      最近更新 更多