0

通常、POST 動詞と PUT 動詞を異なるサービス API として定義します。

@POST
@Path("/getbook")
@Produces({"application/xml","application/json"})
@Consumes({"application/xml","application/json","application/x-www-form-urlencoded"})
public Response getBucket() {
...        } 
@PUT
@Path("/getbook/{name}")
@Produces({"application/xml","application/json"})
@Consumes({"application/xml","application/json","application/x-www-form-urlencoded"})
public Response getBucket(@PathParam("name") String name) {
...        }

これらの動詞を単一のメソッドに結合し、動詞のタイプに基づいて異なるロジックを駆動する方法はありますか? 仮説的に

@POST 
@PUT
@Path("/getbook/{name}")
@Produces({"application/xml","application/json"})
@Consumes({"application/xml","application/json","application/x-www-form-urlencoded"})
public Response getBucket(@PathParam("name") String name) {

if(verb=POST){
...        }
else{

}
}
4

1 に答える 1

0

を使用してこのように試すことができMessageContextます。以下のメソッドのように、サービス メソッドにコンテキストを挿入する必要があります。updateCustomerその後、必要に応じてメソッド タイプを確認できます (ここでは PUT を確認しています)。

@Path("/customer")
public class CustomerService {

    @Context
    private org.apache.cxf.jaxrs.ext.MessageContext mc; 

    @PUT
    public Response updateCustomer(@Context MessageContext context, Customer c) {
        HttpServletRequest request = context.getHttpServletRequest();

        boolean isPut = "PUT".equals(request.getMethod());
    }
}
于 2015-07-13T09:47:52.087 に答える