http://localhost:8181/RESTfulExample/entityid/https://www.youtube.com
@GET
@Path("/entityid/{entityid : [a-zA-Z][a-zA-Z_0-9]}")
public Response getUserByentityid(@PathParam("entityid") String entityid) {
return Response.status(200)
.entity("getUserByentityid is called, username : " + entityid)
.build();
}
如何修改正则表达式以接受其中的url?或者任何其他替代解决方案来获取作为URL的实体ID?
答案 0 :(得分:1)
您不应将URL作为路径参数传递。实体id是常规标识符(整数,GUID,...),在这种情况下,它可以像你拥有它一样在路径中,或者它是一个URL,在这种情况下URL将是https://example.com/myapp/entityid/123
,并且您将返回实体ID URL 的实体ID 部分,它只是一个常规标识符。
现在,技术上,您可以通过使用percent encoding对所有特殊字符进行编码来传递URL作为路径参数,但我不推荐它。< / p>
我们说您的应用程序位于https://example.net/otherapp/
,然后合并后的网址为:
https://example.net/otherapp/entityid/https%3A%2F%2Fexample.com%2Fmyapp%2Fentityid%2F123
正则表达式将与未编码的值匹配,因此可能有效:
{entityid : https?://.*}
注意: 所有值必须为所有值编码路径段,而不仅仅是URL值。整数是安全的,但几乎所有其他值都必须编码。