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
}

メソッドは同じで、ロジックも同じですが、これを 1 つのメソッドに統合したいのですが、2 つのパスを維持したいと考えています。

4

1 に答える 1

2

Javaで同じRESTメソッドに複数の@Pathアノテーションを設定することは可能ですか?

あなたが発見したように、それは不可能です。

Perhaps vie the regular expression?

正規表現を使用してそれを行うこともできますが、それは多くの不必要な複雑さをもたらすだけです. また、注釈の読みやすさも低下します@Path。私見、これには正規表現を使用しないでください。

おそらく、次のようなことができます。

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 に答える