2013-04-02 83 views
0

说我有这个端点:如何找到一个RESTful API的网址中说,API

@GET 
@Path("/{product}") 
@Produces(MediaType.APPLICATION_JSON) 
public String getProduct(
     @PathParam("product") final String product) { 
    return createSignature(<<PLACE COMPLETE URL HERE>>); 
} 

我怎么能知道正在从端点中调用,以完整的URL可能创建基于这个签名?谢谢

回答

2

有几种方法。 通常,您可以将特殊参数添加到您的资源类的方法或字段中。特殊参数通过类型(HttpServletRequest或UriInfo)进行识别,并应使用注释@Context进行标记。

@StormBringerX已经提到可以使用方法参数(+1)传递信息。我个人更喜欢把它作为你的类的一个字段添加,因为我认为这更清晰,并且允许创建只接受应用程序级参数的方法。

+0

确实;另外UriInfo更适合OPs问题,因为您可以通过HttpServletRequest获得大量额外的东西。 – James

+0

@AlexR我添加该领域,它的工作。谢谢! – avillagomez

+0

@StormBringerX感谢您的建议,但我宁愿让端点尽可能干净。 – avillagomez

2

您可以通过将@Context HttpServletRequest request作为参数添加到您的方法来访问原始请求。然后您可以访问任何您想要处理的请求。