Java 如何在http delete方法中将FQDN作为资源id发送
我有一个以完全限定的域名作为主键的表。我正在设置一个RESTAPI来管理数据库(主要是插入和删除),但在发送带有url作为路径参数的http DELETE请求时遇到了问题 例如: RESTAPI servlet容器=Java 如何在http delete方法中将FQDN作为资源id发送,java,rest,http,jersey,Java,Rest,Http,Jersey,我有一个以完全限定的域名作为主键的表。我正在设置一个RESTAPI来管理数据库(主要是插入和删除),但在发送带有url作为路径参数的http DELETE请求时遇到了问题 例如: RESTAPI servlet容器=http://www.someapp.com/api 要删除的成员资源id=www.anotherapp.com/home 我想向http://www.someapp.com/api/www.anotherapp.com/home 泽西岛资源路径为: @DELETE @Path("/
http://www.someapp.com/api
要删除的成员资源id=www.anotherapp.com/home
我想向http://www.someapp.com/api/www.anotherapp.com/home
泽西岛资源路径为:
@DELETE
@Path("/{url}")
public void deleteUrl(@HeaderParam("request-origin") String origin,
@PathParam("url") String url){
// some stuff
}
当我尝试这个时,我得到一个404错误。如何在http DELETE方法中将FQDN作为资源id发送?正如bmargulies在注释中所提到的,错误是由path参数中的unscaped
/
字符引起的。我的解决方案是在Jersey的@Path
注释中添加一个正则表达式
@DELETE
@Path("/{url : .+}")
public void deleteUrl(@HeaderParam("request-origin") String origin,
@PathParam("url") String url){
// some stuff
}
您需要转义路径中的/字符。哪些字符?点和斜线?仅限//在JAX-RS中分离路径名组件,而不是。谢谢,我将尝试一下。需要编写一个js函数来动态查找和转义/I实际上找到了一种方法,通过在@Path注释中添加正则表达式来解决它:
@Path(“/{url:.+}”)