1

是否可以在 Java 中的同一个 REST 方法上设置多个@Path注释?

显然我已经尝试过了,但是它没有工作它无法编译,但是有什么方法可以做到这一点吗?也许竞争正则表达式?

如果有帮助,我正在使用 resteasy。

我的方法看起来像这样(下面的伪代码):

@Path("/project/{projecID}/car/{carID}/carService/{carserviceID}/engine/{engineID}")
public Engine getCarEngin(@PathParam("projecID") projectID, @PathParam("carID") carID, @PathParam("carserviceID") carserviceID, @PathParam{engineID}){
    // return engine based on the id
}

@Path("/project/{projecID}/bus/{busID}/busService/{busserviceID}/engine/{engineID}")
public Engine getBusEngin(@PathParam("projecID") projectID, @PathParam("busID") busID, @PathParam("carserviceID") carserviceID, @PathParam{engineID}){
    // return engine based on the id
}

所以方法是一样的,逻辑是一样的,但是我想把它统一在一个方法下,但保持两条路径。

4

1 回答 1

2

是否可以在 Java 中的同一个 REST 方法上设置多个 @Path 注释?

正如您所发现的那样,这是不可能的。

Perhaps vie the regular expression?

您可以使用正则表达式来做到这一点,但这只会引入很多不必要的复杂性。它还会降低您的@Path-annotations 的可读性。恕我直言,不要为此使用正则表达式。

也许你可以做这样的事情:

enum VehicleType {
    BUS, CAR
}


@Path("/project/{projecID}/{vehicleType}/{vehicleID}/service/{serviceID}/engine/{engineID}")
public Engine getEngine(@PathParam("projecID") projectID, 
    @PathParam("vehicleType") VehicleType vehicleType,  
    @PathParam("vehicleID") vehicleID, @PathParam("serviceID") serviceID, 
    @PathParam("engineID"} engineID){

    // return engine based on the id
}
于 2012-10-16T10:39:48.653 回答