java - Rest Api 中的两个类可以有相同的路径吗?

标签 java web-services rest jax-rs

是否可以为两个类定义相同的路径?

@Path("/resource")    
public class ResourceA{
..
..
}

@Path("/resource")
public class ResourceB(){
..
..
}

最佳答案

这是可能的。请参阅JAX-RS Spec 3.7.2 Request Matching 。通俗地说,规范规定将所有匹配的根资源类放入一个集合中,然后将这些类中的所有匹配方法放入一个集合中。然后排序。因此,如果资源类级别@Path相同,它们都会被放入集合中进行进一步处理

您可以轻松测试这一点,正如我在下面所做的那样(使用 Jersey Test Framework )

public class SamePathTest extends JerseyTest {

    @Test
    public void testSamePaths() {
        String xml = target("resource").request()
                .accept("application/xml").get(String.class);
        assertEquals("XML", xml);
        String json = target("resource").request()
                .accept("application/json").get(String.class);
        assertEquals("JSON", json);
    }

    @Path("resource")
    public static class XmlResource {
        @GET @Produces(MediaType.APPLICATION_XML)
        public String getXml() { return "XML"; }
    }

    @Path("resource")
    public static class JsonResource {
        @GET @Produces(MediaType.APPLICATION_JSON)
        public String getJson() { return "JSON"; }
    }

    @Override
    public Application configure() {
        return new ResourceConfig(XmlResource.class, JsonResource.class);
    }
}

关于java - Rest Api 中的两个类可以有相同的路径吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31301680/

相关文章:

java - 获取 Math.abs 的十进制数输入/输出

java - 在 xsl-fo 文档中仅定义一次边框

java - org.apache.jasper.JasperException : java. lang.NullPointerException:找不到模块 'null'

java - 无法轻松注入(inject) CDI Bean

c - 用C语言设计 "web app"后端的方法?

c# - App Config 中不允许使用 tracemode 属性

web-services - 如何使用 ssl 保护 Web 服务

web-services - REST (RESTful) Web 服务是否与 HTTP 绑定(bind)(耦合或需要)?

http - REST 化 URL

swift - 我如何在 WordPress REST API(版本 2)中创建评论