CXF如何处理API如果未使用@Path变量进行注释?

时间:2015-10-19 14:14:20

标签: java rest jax-rs cxf

场景-1:在我的工作中我遇到了下面的场景,其中:getText1,getText2,getText3,getText4,getText5,getText6没有@Path注释,

但是当我调用API(http://localhost:8080/.../testqa/)时,它总是返回以下结果:

Node

SimpleQAImpl

{
    "name" : "Sumit1 Arora",
    "age" : 21,
    "address" : "Lakshay1 Arora"
}
  1. 请告诉我Apache CXF的工作原理,如果没有像上面的情况那样给出@Path,或者在其他情况下也是如此?

  2. 有没有提及要理解这些东西?

  3. 场景-2:在这种情况下,在API调用之上定义了没有@Path变量,如何从URI调用所有这些API?

    @Service("qaservice")
    @Path("/testqa")
    public class SimpleQAImpl {
    
        @GET
        @Produces(MediaType.APPLICATION_JSON)
        @Path("/simpleqa")
        public Person getText() {
            return new Person("Sumit Arora",21,"Lakshay Arora");
        }
    
        @GET
        @Produces(MediaType.APPLICATION_JSON)
        public Person getText1() {
            return new Person("Sumit1 Arora",21,"Lakshay1 Arora");
        }
    
    
    
        @GET
        @Produces(MediaType.APPLICATION_JSON)
        public Person getText3() {
            return new Person("Sumit3 Arora",21,"Lakshay3 Arora");
        }
    
        @GET
        @Produces(MediaType.APPLICATION_JSON)
        public Person getText4() {
            return new Person("Sumit4 Arora",21,"Lakshay4 Arora");
        }
    
        @GET
        @Produces(MediaType.APPLICATION_JSON)
        public Person getText5() {
            return new Person("Sumit5 Arora",21,"Lakshay5 Arora");
        }
    
        @GET
        @Produces(MediaType.APPLICATION_JSON)
        public Person getText6() {
            return new Person("Sumit6 Arora",21,"Lakshay6 Arora");
        }
    }
    

1 个答案:

答案 0 :(得分:1)

CXF如何选择执行哪种方法的文档位于:CXF resource selection overview。文档通过查看具有更多路径参数或更多特定路径的文件来讨论它更喜欢哪种方法,但是第一种方案中的每种方法都具有相同的路径,因此选择第一种方法。要区分它们,您可以使用路径参数。

第二种方案要求您更改与URL一起使用的HTTP方法:

  • POST / customer
  • GET / customer
  • PUT / customer
每个人都会调用不同的方法。