Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在http delete方法中将FQDN作为资源id发送_Java_Rest_Http_Jersey - Fatal编程技术网

Java 如何在http delete方法中将FQDN作为资源id发送

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("/

我有一个以完全限定的域名作为主键的表。我正在设置一个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("/{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:.+}”)